简单的Java GUI,卡片不出现


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();

相关内容

  • 没有找到相关文章

最新更新