微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Java:JFrame 图像仅在最大化窗口时出现

如何解决Java:JFrame 图像仅在最大化窗口时出现

我正在尝试让图像出现在我的 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);

解决方法

简单的例子。

图像放置在 stof 包中。该示例使用 ImageIO 加载图像。原因有两个。

  1. 如果出现问题,则会引发异常,以便您进行诊断
  2. ImageIO.read 在图像完全加载之前不会返回。这意味着,与 ImageIcon 不同,一旦调用返回,您就知道图像可用于渲染。请记住,如果图像很大并且您在事件调度线程中执行此操作,则会导致 UI“停滞”

示例

Example

import java.awt.EventQueue;
import java.awt.image.BufferedImage;
import java.io.IOException;
import javax.imageio.ImageIO;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;

public class Test {

    public static void main(String[] args) {
        new Test();
    }

    public Test() {
        EventQueue.invokeLater(new Runnable() {
            @Override
            public void run() {
                try {
                    BufferedImage image = ImageIO.read(Test.class.getResource("/stof/Background.png"));

                    JFrame frame = new JFrame();
                    frame.add(new JLabel(new ImageIcon(image)));
                    frame.pack();
                    frame.setLocationRelativeTo(null);
                    frame.setVisible(true);
                } catch (IOException ex) {
                    ex.printStackTrace();
                }
            }
        });
    }
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。