java - 如何将ImageIcon 添加到JDialog 中?

标签 java swing jlabel jdialog imageicon

我试图创建一个 float 对话框,其中包含加载器 gif 图像和一些文本。我有以下类(class):

public class InfoDialog extends JDialog {
    public InfoDialog() {
        setSize(200, 50);
        setDefaultCloseOperation(JDialog.DO_NOTHING_ON_CLOSE);
        setUndecorated(true);
        setLocationRelativeTo(null);

        URL url = InfoDialog.class.getClassLoader().getResource("loader.gif");
        ImageIcon loading = new ImageIcon(url);
        getContentPane().add(new JLabel("Logging in ... ", loading, JLabel.CENTER));
    }
}

但是,当我打电话时:

   InfoDialog infoDialog = new InfoDialog()
   infoDialog.setVisible(true);

显示一个空对话框。对话框中未显示 ImageIcon 和 Label。

我在这段代码中做错了什么?

非常感谢。

最佳答案

图像通常放在“资源”源文件夹中,

enter image description here
然后作为字节流访问,

package com.foo;

import java.io.IOException;
import javax.imageio.ImageIO;
import javax.swing.ImageIcon;
import javax.swing.JDialog;
import javax.swing.JLabel;
import javax.swing.SwingUtilities;

public class Demo 
{
    private static final String IMAGE_URL = "/resource/bar.png";

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

    private static void createAndShowGUI()
    {
        SwingUtilities.invokeLater(new Runnable()
        {
            @Override
            public void run() 
            {
                try
                {
                    JDialog dialog = new JDialog();     
                    dialog.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
                    dialog.setTitle("Image Loading Demo");

                    dialog.add(new JLabel(new ImageIcon(ImageIO.read(getClass().getResourceAsStream(IMAGE_URL)))));

                    dialog.pack();
                    dialog.setLocationByPlatform(true);
                    dialog.setVisible(true);
                } 
                catch (IOException e) 
                {
                    e.printStackTrace();
                }
            }
        });
    }
}

制作摩根·弗里曼。

enter image description here

关于java - 如何将ImageIcon 添加到JDialog 中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14801079/

相关文章:

java - 线程中的异常 "main"java.lang.IllegalArgumentException : setSelectedIndex: 4 out of bounds

java - 使用函数将文本设置为 Jlabel

java - 为 JTextField 添加标签

java - Hibernate Validator(如何只接受4个字母和10个数字)

java - 从动态创建的 JTextFields 获取内容

java - DateTime 到日期的转换,不是正确的值

java - 为什么 repaint() 方法在这里不起作用?

java - 在 gui Java 中对 if 语句的输出显示添加延迟

java - JPanel 的首选高度低于表渲染器中其子级的组合高度

java - 抓取数据。保存存档?