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来显示一些卡片。首先,我只是想通过显示一张卡片来测试它。由于某些原因,我似乎不明白为什么没有显示。
您实际上没有使用正确的文件名"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()
您需要在添加所有必要的组件后将Frame设置为可见的。将slide.setVisible(true);
向下移动到构造函数的底部,如下所示:
...
slide.add(panel);
slide.setVisible(true);
或者您可以在构造函数的底部添加slide.revalidate();
。