我遇到了大量的問題,它將包含圖像的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();
如何查找&負載的圖片嗎?
什麼是您的軟件包層次結構? – 2013-05-10 16:42:48
只能在'paintComponent'內執行'g.drawImage'。並且在沒有觀察者的情況下調用getWidth/getHeight,那不是異步的。 – 2013-05-10 16:52:13
爲了儘快提供更好的幫助,請發佈[SSCCE](http://sscce.org/)。但作爲一般建議。 '了setPreferredSize(大小); setMinimumSize(size); setMaximumSize(size); setSize(size); setLayout(null); g.drawImage(img,0,0,null);'不要調用'paintComponent()'方法中的第一個4的任何一個。不要將佈局設置爲null,因爲'JPanel'是一個'ImageObserver',最後一行應該是''g.drawImage(img,0,0,this);' – 2013-05-10 16:57:58