所以我试图将一个图像添加到一个JLabel对象,该对象被添加到名为“topPanel”的JPanel中,这是一个名为JFrame的部分 “primaryWindow”。我已经宣布了“topPanel”和“primaryWindow”。我在其他表单上发现你必须创建一个单独的源文件夹并在该文件夹中添加图像文件才能访问它,我这样做了。
但是,当我执行以下操作时,图像似乎不在标签上。我知道它与正确添加JLabel无关,因为当我在JLabel构造函数中输入String时,String会出现在面板上。但是没有出现图像。我正确添加图像吗?如果这有帮助,我正在使用mac。
private JLabel image = new JLabel();
image.setIcon(new ImageIcon("Check.png"));
topPanel.add(image);
primaryWindow.add(topPanel, BorderLayout.NORTH);
答案 0 :(得分:0)
您也可以使用BufferedImage
BufferedImage myPicture = ImageIO.read(new File("C:\\xx\\xxx\\Check.png.jpg"));
Image scaled = myPicture.getScaledInstance(100,70,Image.SCALE_SMOOTH);
image = new JLabel(new ImageIcon(scaled));
topPanel.add(image);
primaryWindow.add(topPanel, BorderLayout.NORTH);
请注意"C:\\xx\\xxx\\Check.png.jpg"
是保存Check.png的路径。
希望这会有所帮助。
答案 1 :(得分:-1)
传递给JLabel的setIcon方法的ImageIcon可能为null。在调用setIcon之前,您是否尝试检查它是否为null?如果在项目的根目录中创建“res”资源文件夹,则可以尝试以下操作:
image.setIcon(new ImageIcon(ImageIO.read(new File("res/Check.png"))));
此外,如果您使用的是Eclipse,则应通过右键单击并按下refresh来尝试刷新项目目录;有时Eclipse不会注册添加的文件。
最后,尝试将JPanel的背景设置为某种颜色以查看它是否正在显示它并确保其宽度和高度不为0(您使用的布局可能会改变其大小)。