我有一个包com.supercorp.killerapp,如果我没有使用guiformbuilder创建应用程序,那么它就是一个包(com.supercorp.killerapp.views):
我正在使用的语法是:
JButton iconButton = new JButton(new ImageIcon("page_delete.png"));
按钮未显示图像。
答案 0 :(得分:4)
我在一个名为com.example.GreatApp.resources
的包中放入包含我的应用程序的jar,然后使用以下命令加载它:
getClassLoader().getResourceAsStream(
"com/example/GreatApp/resource/icon.png");`
<强>更新。完整示例
/**
* Creates and returns an ImageIcon from the resource in jar.
* @param location resource location in the jar,
* like 'com/example/GreatApp/res/icon.png' or null if it was not found.
*/
public ImageIcon createImageIconFromResource(String location)
throws java.io.IOException {
java.io.InputStream input = getClassLoader().getResourceAsStream(
location);
// or throw an ioexception here aka `file not found`
if(input == null) return null;
return new ImageIcon(ImageIO.read(input));
}
答案 1 :(得分:3)
您可以将图像放在类路径的任何位置。我发现将它们放在“images”文件夹中的项目根目录中是最合乎逻辑的。
编译时的包映射到文件夹&amp;打包所以看起来像你需要:
Image im = Toolkit.getDefaultToolkit().getImage( "/com/supercorp/killerapp/views/page_delete.png" );
JButton iconButton = new JButton( new ImageIcon( im ) );