.png 图标未加载到 JFrame window

.png icon not loading in a JFrame window

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");

}
}

当我 运行 文件时,我只得到按钮上的文本 "hello" 但没有图像。
(此图片是从 http://icons.iconarchive.com/icons/iynque/flat-ios7-style-documents/512/png-icon.png 下载的)

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

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

图像不应在 src 中,而应在主应用程序目录中,通常在上面。因此,移动您的图标或将代码更改为:

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

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

win.pack();

或其他刷新 window 内容的方法。

getClass().getResource("icon.png")

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