繁体   English   中英

简单的Java GUI,没有显示卡

[英]Simple Java GUI, cards not appearing

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

在将所有必需的组件添加到框架后,需要将其设置为可见。 移动slide.setVisible(true); 像下面这样构造到底部:

...
slide.add(panel);
slide.setVisible(true);

或者,您可以添加slide.revalidate(); 在构造函数的底部。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM