import javax.swing.*;
public class SlideShow {
JFrame slide = new JFrame("Slide Show");
public SlideShow(){
slide.setSize(300,400);
slide.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
slide.setVisible(true);
slide.setLocationRelativeTo(null);
JPanel panel = new JPanel();
JLabel label = new JLabel(new ImageIcon("Images/picture1"));
panel.add(label);
slide.add(panel);
}
public static void main(String[] args){
SlideShow slide = new SlideShow();
}
}
我必须创建一个显示一些卡片的简单Java GUI。首先,我只是想通过显示一张卡来测试它。出于某种原因,我似乎无法弄清楚为什么没有显示任何内容。
答案 0 :(得分:3)
您实际上没有使用正确的文件名"Images/picture1"
。应该是类似"Images/picture1.png"
的文件格式
如果您打算将它们嵌入到程序中,通常应该从类路径中读取图像文件。为此,您首先需要将文件放在类路径中。对于大多数IDE构建配置,它就像将图像放在src
中一样简单。所以
ProjectRoot
src
images
picture1.png
然后你会像
一样阅读new ImageIcon(getClass().getResource("/images/picture1.png"));
更好的方法是使用ImageIO.read()
。如果文件路径不正确,它将抛出异常,因此您知道出错的地方
Image image = ImageIO.read(getClass().getResource("/images/picture1.png"));
ImageIcon icon = new ImageIcon(image);
您需要将其放在try/catch
块
在添加组件之后,还要执行codeNinja关于setVisible()
的说法。同样优选pack()
框架,而不是setSize()
答案 1 :(得分:1)
在向其添加所有必要组件后,您需要将框架设置为可见。将slide.setVisible(true);
向下移动到构造函数的底部,如下所示:
...
slide.add(panel);
slide.setVisible(true);
或者,您可以在构造函数的底部添加slide.revalidate();
。