【发布时间】:2021-03-22 01:55:52
【问题描述】:
我正在尝试让图像出现在我的 JFrame 中。但是,此图像仅在我最大化 GUI 窗口时出现。我的图像位于我的 src 文件夹中。我想知道我是否错误地实现了 JFrame。
更新代码
public static void main(String args[]) {
JFrame frame = new JFrame();
frame.setDefaultCloseOperation
(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().add(new JLabel(new ImageIcon("logo.png")));
frame.pack();
frame.setVisible(true);
【问题讨论】:
-
您正在向使用
BorderLayout的容器添加两个标签,这可能会导致您出现问题。避免使用setSize和setBounds,因为无论如何你都在使用pack。如果需要,您可以使用setLocation来定位框架。在致电setVisible之前完成所有这些操作。如果图像在您的src文件夹中,这表明图像是“嵌入的”,您应该使用getResource为图像生成URL,然后通过ImageIcon加载它 -
我删除了 setBounds 并且现在正在使用 setLocation,两者都在 setVisible 之前。同样的问题正在发生。在我以某种方式调整窗口大小之前,图像不会出现......我认为这与我的图像的嵌入方式有关,就像你说的那样。
-
我认为这与您将两个标签添加到
BorderLayout的事实有关 - 图像已加载的事实表明它不是(尚未)并且与图片已嵌入 -
我该如何解决这个问题?
-
最小化代码以开始 - 1 个标签,1 个图像。打包展示窗口
标签: java image swing jframe jlabel