Displaying jpg image on JPanel - java

How can I display jpg image which I stored in arraylist in JPanel?
Im not able to display the jpg files in the JPanel.
String[] pictureFile = {"A.jpg","B.jpg","C.jpg"};
List<String> picList1 = Arrays.asList(pictureFile);
Collections.shuffle(picList1);
ImageIcon icon = new ImageIcon("picList1.get(0)");
JLabel label1 = new JLabel();
label1.setIcon(icon);
JPanel panel = newJPanel;
panel.add(label);

You should not put the call to the array in quotes.
Instead, you should try the following:
ImageIcon icon = new ImageIcon(picList1.get(0));

The problem is in the line
ImageIcon icon = new ImageIcon("picList1.get(0)");
It's interpreting the string as a file name. You should just need to unquote the picList1.get(0) bit.

Related

Make label with any image (gif and other)

What I want to do is:
Load an image that it is a gif, jpeg etc ... coming from a URL (but it is only the gif that I do not arrive but it must work with the others)
Put it in a JLabel in IconImage (although it suits me if it is not in the icon of the label as long as it is in the label)
Make it auto resize by taking all the space of the label but keeping its ratio
And finaly make this.add (label)
I already managed to do it with any type of image but the gifs was freeze to the first image
I searched for more solutions but could not find any that worked for me.
So, if someone could help me from the very beginning. I have the URLs and can share, if required.
Exemple of my code
//that work but images is not resize
JLabel label = new JLabel();
label.setIcon(new ImageIcon(new URL(image.getPath())));
this.add(label);
//images don't appear
URL url = new URL(image.getPath());
JLabel label = new JLabel();
java.awt.Image img = Toolkit.getDefaultToolkit().getImage(url);
img = this.scaleImage(img,Toolkit.getDefaultToolkit().getScreenSize().width/6); label.setIcon(new ImageIcon(img));
Try this, you may need to put it in a try-catch
BufferedImage image = ImageIO.read(new URL(url));
JLabel label = new JLabel(new ImageIcon(image));

Error when I try to put an ImageIcon in Java

I tried to put a simple icon in a JPanel formatted with the BoxLayout.
JPanel panel_4 = new JPanel();
contentPane.add(panel_4, BorderLayout.CENTER);
panel_4.setLayout(new BoxLayout(panel_4, BoxLayout.X_AXIS));
ImageIcon seven= new ImageIcon("‪C:\\Users\\alewe\\workspace\\SlotMachine\\Lucky_Seven-128.png");
JLabel lblNewLabel_1 = new JLabel(seven);
panel_4.add(lblNewLabel_1);
When I ran the code it gave me the error "Some characters cannot be mapped using "Cp1252" character encoding", I saved by UTF-8, now it starts but I can't see the icon.
Maybe if you use setIcon will help you:
ImageIcon seven= new ImageIcon("‪C:\\Users\\alewe\\workspace\\SlotMachine\\Lucky_Seven-128.png");
JLabel lblNewLabel_1 = new JLabel();
//Set your icon to your label
lblNewLabel_1.setIcon(seven);
panel_4.add(lblNewLabel_1);
You can read more about icons here
you will need a inputstream to read the picture. use it like this:
File f = new File("filepath");
InputStream in=new FileInputStream(f);
if (in != null) {
ImageIcon imageIcon = new ImageIcon(ImageIO.read(in));
label.setIcon(imageIcon);
} else {
LOG.debug("No icon found...");
}

Add images into an array JPanel

I have made a chessboard out of JPanel. Using ImageIcon doesn't work, so I looked over the site, but all of it seems complicated, how do I add images to an array like
tiles[0][0].setIcon(br);
This is the JPanel that I created for the chessboard
private JPanel[][] tiles = new JPanel[6][6];
I have tried this:
ImageIcon bn = new ImageIcon("art/BN.gif");
ImageIcon bb = new ImageIcon("art/BB.gif");
ImageIcon br = new ImageIcon("art/BR.gif");
ImageIcon wn = new ImageIcon("art/WN.gif");
ImageIcon wb = new ImageIcon("art/WB.gif");
ImageIcon wr = new ImageIcon("art/WR.gif");
tiles[0][0].add(new JLabel(bn));
tiles[0][1].add(new JLabel(wn));
tiles[0][2].add(new JLabel(wb));
tiles[0][3].add(new JLabel(wb));
tiles[0][4].add(new JLabel(wn));
tiles[0][5].add(new JLabel(wr));
tiles[5][0].add(new JLabel(br));
tiles[5][1].add(new JLabel(bn));
tiles[5][2].add(new JLabel(bb));
tiles[5][3].add(new JLabel(bb));
tiles[5][4].add(new JLabel(bn));
tiles[5][5].add(new JLabel(br));
But it doesn't work
Where are your images being stored? What exactly doesn't work?
I'm going to take a shot in the dark and assume you're attempting to load files that are embedded in your application.
Taken from; https://docs.oracle.com/javase/7/docs/api/javax/swing/ImageIcon.html
ImageIcon(String filename)
Creates an ImageIcon from the specified file.
ImageIcon(URL location)
Creates an ImageIcon from the specified URL.
Try this;
ImageIcon bn = new ImageIcon(getClass().getResource("art/BN.gif"));
It will attempt to create an ImageIcon from a URL returned by .getResource()

Adding Image In JFrame : Java

If I Use This Way To Add image in panel
static ImageIcon bg = new ImageIcon("hangman1.png");
Then Where Should Be Mine hangman1.png should be so it display correctly??
Load your "hangman1.png" file as a resource and add it to JLabel:
JLabel label = new JLabel(new ImageIcon(getClass().getResource("/path/to/your/image/hangman1.png")));
Before of that, add it into some package in your Java project.

Rendering Image into label

I have a label. I want to render image into it. But the following code would do anything.
CardLayout cl = (CardLayout) (mainPanel.getLayout());
cl.show(mainPanel, "newPersonaCard");
BufferedImage myPicture = ImageIO.read(new File("C:\\Desktop\\Documents\\Pictures\\always.jpg"));
ImageIcon icon = new ImageIcon(myPicture);
icon.getImage().flush();
I am using netbean designer.
You are right, in some cases there issue with repainting Icon in the JLabel, then you have to call,
myIcon.getImage().flush();
myLabel.setIcon(myIcon);
rest of methods is implemented in the Icon and JLabel correctly
.
.
File file = fileChooser.getSelectedFile();
JLabel label = new JLabel();
ImageIcon icon = new ImageIcon(file.getAbsolutePath());
label.setIcon(icon);
//add label to panel
fileChooser.showDialog(saveBtn2, null);
File file = fileChooser.getSelectedFile();
System.out.println("The path to file "+file.getAbsolutePath());
ImageIcon icon = new ImageIcon(file.getAbsolutePath());
pictureLbl.setIcon(icon);

Categories

Resources