简单的Java GUI,卡片没有出现

时间:2014-05-06 19:58:30

标签: java swing user-interface imageicon

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。首先,我只是想通过显示一张卡来测试它。出于某种原因,我似乎无法弄清楚为什么没有显示任何内容。

2 个答案:

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