你在哪里放置你正在为java应用程序中的按钮加载的图像?

时间:2010-12-09 16:54:53

标签: java image swing button icons

我有一个包com.supercorp.killerapp,如果我没有使用guiformbuilder创建应用程序,那么它就是一个包(com.supercorp.killerapp.views):

  • 如何在views目录中的JInternalFrame上设置按钮的图标?
  • 一般情况下,如何访问其他文件夹中的图像?
  • 我的所有图片都应该包含在一个单独的文件夹中吗?

我正在使用的语法是:

JButton iconButton = new JButton(new ImageIcon("page_delete.png"));

按钮未显示图像。

2 个答案:

答案 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 ) );