我有一个程序运行并且不会在eclipse中抛出运行时错误,该错误应该在程序结束时将图像设置为JButton作为结果,但图像永远不会放在按钮上。该程序在DrJava中运行良好但我转移到eclipse以生成jar文件。
我在另一个问题中看到,有人有类似的问题,说图像应该放在项目目录而不是src目录,但它没有解释如何实际修复问题...我是新的日食,所以如果有人可以帮助我感谢你们。
这里是如何在我的代码中设置图像:
public void tempSelection70 (int fRate, int wbTemp, int rcTons, int a, int r)
{
for (int model = 0; model < 7; model++)
{
MyArray y = new MyArray(tons70FCharts[model], "t");
int[][] x = y.getArray();
int t = x[a][r];
if (rcTons == t)
{
tableButton = new JButton(new ImageIcon(tablesFor70[model], tablesFor70[model]));
break;
}
else
{
tableButton = new JButton(new ImageIcon("CANNOT_FIND_MODEL.GIF", "SCROLL"));
}
}
for (int model = 0; model < 7; model++)
{
MyArray y = new MyArray(flow70FCharts[model], "f");
int[][] x = y.getArray();
int t = x[a][r];
if (fRate == t)
{
tableButton = new JButton(new ImageIcon(tablesFor70[model], tablesFor70[model]));
break;
}
else
{
tableButton = new JButton(new ImageIcon("CANNOT_FIND_MODEL.GIF", "SCROLL"));
}
}
}
答案 0 :(得分:0)
您正在传递文件名作为参数。我想这个文件名是一个相对文件名。因此,该文件与IDE启动java
命令以执行应用程序的目录相关:工作目录。
此目录可以从Eclipse中的运行配置更改,位于“Arguments”选项卡下。但这可能不是你想要的。图标应该与您的应用程序捆绑在一起,并加载类加载器。将它们放在源文件夹中的包下。 Eclipse会将它们与已编译的类一起复制到输出目录。如果你为你的应用程序生成一个jhar,它们将与你的类一起捆绑在jar中。完成此操作后,您只需使用构造函数将URL作为参数,然后传递
SomeClassOfYourApp.getResource("/the/package/of/the/image.png")
作为此URL参数。
这样您就可以轻松地将图标与应用程序捆绑在一起,并且无论工作目录是什么,都会加载图标。