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...");
}
Related
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()
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);
I'm using a JFrame to present a message box with some text and 2 buttons. How do I get the text to wrap automatically based on the size of the box?
Here's my current code:
dialogFrame = new JFrame();
JButton newButton = new JButton("New");
newButton.addActionListener(new newUploadAction());
JButton resumeButton = new JButton("Resume");
resumeButton.addActionListener(new resumeUploadAction());
//dialogFrame.setUndecorated(true);
JPanel addPanel = new JPanel();
JPanel addPanel2 = new JPanel();
addPanel.add(newButton);
addPanel.add(resumeButton);
String text = "<html><p>A previous control file exists for this file. ";
text += "Would you like to initiate a new transfer or resume the previous one?</p></html>";
JLabel testLabel = new JLabel(text);
//testLabel.setPreferredSize(new Dimension(1, 1));
addPanel2.add(testLabel);
Container content = dialogFrame.getContentPane();
//content.setBackground(Color.white);
content.setLayout(new BoxLayout(content, BoxLayout.PAGE_AXIS));
content.add(addPanel2);
content.add(addPanel);
dialogFrame.setSize(200,200);
dialogFrame.setVisible(true);
dialogFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
I read somewhere that calling
testLabel.setPreferredSize(new Dimension(1, 1));
would cause the wrapping behavior I want, but that just resulted in the text not showing up at all.
You could place the text in a JTextArea and call setLineWrap(true) and setWrapStyleWord(true) on the JTextArea. If you want it to look more JLabel-ish, then just change the color settings of the JTextArea to your liking.
EDIT 1
Also another thing that could work: consider having the holding JPanel use a BorderLayout:
JPanel addPanel2 = new JPanel(new BorderLayout()); //!! added BorderLayout
So that the JLabel added will fill the addPanel2.
And how do I put Image on a JPanel using Netbeans?
Have a look at this tutorial: Handling Images in a Java GUI Application
At the same time you could code as well:
JPanel panel = new JPanel();
ImageIcon icon = new ImageIcon("image.jpg");
JLabel label = new JLabel();
label.setIcon(icon);
panel.add(label);
You can use ImageIcon and JLabel:
ImageIcon icon = createImageIcon("image.gif", "sample image");
// Label with text and icon
JLabel label1 = new JLabel("Image and Text", icon, JLabel.CENTER);
// Label with icon only
JLabel label2 = new JLabel(icon);
// Add to your JPanel
panel.add(label1);
panel.add(label2);
1) First Paste the image to the Application folder
2) Add a label to the panel
3) Right click label-> Properties
4) Select Icon-> more option
5) Select Package and File and Click oK
6) U R DONE :)
You have to set a JLabel with your icon property set to the picture.
For a more detailed solution to the particular problem, go to
http://www.netbeanstutorials.com/p/handling-images.html
There's even a video how to do it there in case you need it.
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.