我用Java创建了一个GUI程序,并且我有一个带有方法和switch语句的类,该类将根据所单击的按钮在新的JFrame中显示图像。总的来说,代码很笨拙,没有任何错误处理(我最初是为分配而做的,现在我自己在上面进行构建),但是我想知道是否有任何方法可以在不进行硬编码的情况下加载图像他们的位置。现在,图像位于根目录中,因此NetBeans无需硬编码即可访问它,但是一旦我将其转换为.jar文件而不用硬编码文件位置,就可以通过任何方式使其显示图像,尤其是因为我想要能够在不同的计算机上使用它?我已经包含了以下方法。
谢谢!
/* method to display images of 3D shapes using switch cases and a new JFrame
depending on which shape button is selected */
public void displayOutput(int x) {
JFrame f = new JFrame();
f.setBounds(200, 200, 850, 600);
f.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
f.setLocationRelativeTo(null);
ImageIcon icon = new ImageIcon("");
switch(x) {
case 1:
icon = new ImageIcon("sphere.png");
break;
case 2:
icon = new ImageIcon("cube.jpg");
break;
case 3:
icon = new ImageIcon("cone.png");
break;
case 4:
icon = new ImageIcon("cylinder.png");
break;
case 5:
icon = new ImageIcon("torus.png");
break;
}
JLabel image = new JLabel(icon);
f.add(image);
f.setVisible(true);
}
您可以将图像嵌入JAR文件中。将它们放在源根文件夹中(如果是maven / gradle项目,则位置为src/main/resources/images
,其中images
文件夹将被复制到构建版本的JAR文件中),然后按以下方式加载它们:
var resourceURL = Thread.currentThread().getContextClassLoader().getResource("/images/sphere.png");
var imageIcon = new ImageIcon(resourceURL);