【问题标题】:.png icon not loading in a JFrame window.png 图标未加载到 JFrame 窗口中
【发布时间】:2015-06-28 09:15:01
【问题描述】:

import java.awt.*;
import javax.swing.*;

public class Program {
public static JButton button;
public static void main(String args[]){
    JFrame win=new JFrame("title");
    win.setVisible(true);
    win.setSize(500,500);
    win.setLayout(new FlowLayout());
    win.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    ImageIcon i=new ImageIcon("icon.png");
    button=new JButton("hello",i);
    win.add(button);
    button.setToolTipText("click me");

}
}

当我运行文件时,我只是在按钮上看到文本“你好”,但没有图像。
(这张图是从http://icons.iconarchive.com/icons/iynque/flat-ios7-style-documents/512/png-icon.png下载的)

图像存储在项目src文件中。

【问题讨论】:

  • 图像与源/项目的关系存储在哪里
  • 我同意,支持 png 图片,所以 icon.png 必须在错误的位置。
  • 您的图标必须在类路径中,或类路径的相对路径中。如果将其构建为 jar 文件,那么该图标在 jar 中的什么位置?

标签: java swing jbutton embedded-resource imageicon


【解决方案1】:

图像不应位于src 中,而应位于主应用程序目录中,通常位于上一级。所以移动你的图标或将代码更改为:

ImageIcon i=new ImageIcon("src/icon.png");

您应该考虑将其添加到您的资源中(以便将其放置在 jar 中)并通过 getResource() 打开。示例中的下一个问题是它不会显示,直到通过调整大小或其他操作刷新窗口。在末尾添加这一行:

win.pack();

或其他刷新窗口内容的方法。

【讨论】:

    【解决方案2】:

    试试这个: ImageIcon i=new ImageIcon("src/icon.png");

    【讨论】:

    • 这在部署时几乎肯定会失败。应用程序资源在部署时将成为嵌入式资源,因此明智的做法是立即开始访问它们。 embedded-resource 必须通过 URL 而不是文件访问。请参阅info. page for embedded resource 了解如何形成 URL。
    【解决方案3】:
    getClass().getResource("icon.png")
    

    会这样做,如果您的图像文件位于 Program.java 的同一目录下,并且在编译时,它确实被打包到 Program.class 所在的同一目录中。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-01-30
      • 2015-06-10
      • 1970-01-01
      • 1970-01-01
      • 2017-06-13
      相关资源
      最近更新 更多