【发布时间】:2013-05-05 09:49:44
【问题描述】:
我在将包含图像的 java 程序打包成 jar 以转换为可执行文件时遇到大量问题。这些图像已用于程序和按钮的背景。请看下图,它显示了我希望转换为 jar 的程序。
正如您在上面看到的,程序运行正常。我创建了没有自定义背景和不包含图像的自定义按钮的相同程序,我成功地将其打包到 jar 中,随后打包到 .exe 文件中。
关于绘制我的背景,我这样做如下:
public void paintComponent(Graphics g) {
Image img = new ImageIcon("imgs/Bgnd1.jpg").getImage();
Dimension size = new Dimension(img.getWidth(null), img.getHeight(null));
setPreferredSize(size);
setMinimumSize(size);
setMaximumSize(size);
setSize(size);
setLayout(null);
g.drawImage(img, 0, 0, null);
}
关于使用图像创建我的 4 个自定义按钮,我正在执行以下操作:
// Prepare rollover images
ImageIcon F1 = new ImageIcon("imgs/btn_f1_not_selected.jpg");
ImageIcon F1rollOver = new ImageIcon("imgs/btn_f1_selected.jpg");
// Create F1 button
final JButton btnF1 = new JButton(F1);
//btnF1.setOpaque(false);
btnF1.setContentAreaFilled(false);
btnF1.setBorder(null);
btnF1.setBorderPainted(false);
btnF1.setFocusPainted(false);
btnF1.setRolloverIcon(F1rollOver);
我尝试将图像放在 bin 文件夹中,为了创建背景,我更改了上述关于图像声明/获取的方法。
public void paintComponent(Graphics g) {
String path = "Bgnd11.jpg";
java.net.URL imgURL = getClass().getResource(path);
Image img = new ImageIcon(imgURL).getImage();
Dimension size = new Dimension(img.getWidth(observer), img.getHeight(observer));
setPreferredSize(size);
setMinimumSize(size);
setMaximumSize(size);
setSize(size);
setLayout(null);
g.drawImage(img, 0, 0, null);
}
我还尝试获取创建按钮所需的图像,如下所示,然后将它们传递给我的按钮,但这不起作用。
String path = "Bgnd11.jpg";
java.net.URL imgURL = getClass().getResource(path);
Image img = new ImageIcon(imgURL).getImage();
如何定位和加载图片?
【问题讨论】:
-
你的包层次结构是什么?
-
仅在
paintComponent内执行g.drawImage。并且在没有观察者的情况下调用 getWidth/getHeight,这不是异步的。 -
如需尽快获得更好的帮助,请发帖SSCCE。但作为一般建议。
setPreferredSize(size); setMinimumSize(size); setMaximumSize(size); setSize(size); setLayout(null); g.drawImage(img, 0, 0, null);不要从paintComponent()方法中调用任何 1st 4。不要将布局设置为nullever & 因为JPanel是ImageObserver,所以最后一行应该是..g.drawImage(img, 0, 0, this); -
“我成功将其打包成 jar,随后打包成 .exe 文件。” 对于部署 Java 桌面应用程序,最好的选择通常是安装该应用程序。使用Java Web Start。 JWS 适用于 Windows、OS X 和 *nix。
-
@1897Blanconeri : 希望this answer 对这个话题有所帮助:-)
标签: java swing jbutton embedded-resource imageicon