【问题标题】:Icon path for JFrameJFrame 的图标路径
【发布时间】:2013-09-08 02:01:01
【问题描述】:

我需要 jframe 上的图像图标,但我不想给出路径。 我正在使用这个

jLabel1.setIcon(new javax.swing.ImageIcon("C:\\Users\\ABC\\Desktop\\folder name\\1.jpg"));

因为每个系统都有不同的路径,这就是我无法在其他系统(计算机)上编译它的原因。 我需要一些方法,以便仅通过文件名设置图像图标。图片在src文件夹中。

【问题讨论】:

  • 请看一下这个answer。希望它有所帮助:-)

标签: java swing user-interface embedded-resource imageicon


【解决方案1】:

Image 作为嵌入式资源读取。此处显示的新 images 文件夹只需要在类路径中可用

public class ImageApp {

    public static void main(String[] args)  {
        SwingUtilities.invokeLater(new Runnable() {

            @Override
            public void run() {
                Image image = null;
                try {
                  image = ImageIO.read(getClass().getResource("/images/1.png"));
                } catch (IOException e) {
                    e.printStackTrace();
                }

                JFrame frame = new JFrame("Image App");
                frame.add(new JLabel(new ImageIcon(image)));
                frame.pack();
                frame.setVisible(true);
            }
        });
    }
}

【讨论】:

  • 同意。将它放在一个明确的资源目录中似乎更好。
【解决方案2】:

您可以使用相对路径:例如,如果图标在程序工作目录(与程序相同的目录)中,则可以使用“1.jpg”,如果在文件夹中 - “folderName/1.jpg”。

【讨论】:

  • "你可以使用相对路径" 1) 非常脆弱。它假定当前目录是正在运行的 Jar 的目录,这不一定适用于桌面应用程序。从可执行的 Jar 运行,并且从不适用于桌面应用程序。使用 JWS 运行。 2) 该图标很可能在部署时成为嵌入式资源,无论如何都不能作为File 访问。
猜你喜欢
  • 1970-01-01
  • 2013-03-19
  • 2011-03-20
  • 1970-01-01
  • 2015-04-23
  • 2020-02-10
  • 1970-01-01
  • 1970-01-01
  • 2021-04-03
相关资源
最近更新 更多