2013-08-06 118 views
0

所以我試圖給我的程序添加一個圖標,但我正在閱讀的教科書解釋瞭如何僅適用於Windows用戶。我想知道如何添加圖標。我有它在我的節目源文件夾和我到目前爲止的代碼是這樣的:如何將圖標添加到Mac OS X中的Java(NetBeans)?

logo = new ImageIcon("~://resources//CherryBoom.png"); 

labelone = new JLabel("Fruit No.1 : ", logo, SwingConstants.LEFT); 
JPanel panelone = new JPanel(); 
panelone.add(labelone, logo); 

圖標仍然不會顯示在窗口面板上,所以我真的在這裏丟了,我不我不知道如何才能讓它顯示在我的程序中。

+0

我不知道,Java是能夠處理「〜」指令 – MadProgrammer

+0

你都幫了我的感謝。 – Mandygir

回答

2

首先,檢查明顯的解決方案,如:

  • 你做完window.add(panelone);
  • 是在正確的位置的文件/ URL是正確的

其次,如果你恨佈局管理員喜歡我,但仍想使用javax.swing,您可以嘗試在面板的paintComponent(Graphics g)類中使用drawStringdrawImage方法。詳細介紹:

你需要使自己的JPanel:

public class MyPanel extends JPanel {

以及覆蓋的方法:

@Override 
public void paintComponent(Graphics g) { 

的方法中,把這種讓窗口也可以刷新本身和做其他家務:

super.paintComponent(g);

然後,用束帶和drawImage方法繪製的地方這些圖片,你想他們:

g.drawString("Fruit No. 1", x, y); 
logo.paintIcon(this, g, x, y); 

無論何時更改或繪製圖像,你還需要在main方法調用:

panelone.repaint();

希望這會有所幫助!

+0

嗯,我從來沒有使用過drawString或drawImage。所以我真的不知道它是如何工作的,我剛剛檢查過它,而我幾乎沒有開始學習使用GUI,擺動和那些屬性。即使我的編程詞彙很差,但我正在盡我所能去學習這一點。我嘗試了「window.add(panelone);但它沒有奏效,你想讓我從這個類發佈我的代碼,這樣你就可以看到我想要做的事情,也許它會對我們有更多幫助 – Mandygir

+0

誰知道,也許圖像就在那裏,但可能我只需要設置JLabel或JPanel的尺寸。 – Mandygir

+0

如果你需要幫助,你肯定可以發佈更多的代碼,我很樂意提供幫助。 – snickers10m

2

Java不支持擴展「〜」路徑指令。

嘗試......

try { 
    File file = new File("~"); 
    System.out.println(file.getAbsolutePath()); 
    System.out.println(file.getCanonicalPath()); 
} catch (IOException exp) { 
    exp.printStackTrace(); 
} 

我想你會發現,它並沒有指向用戶的主文件夾。

相反,你應該使用System.getProperty("user.home")

logo = new ImageIcon(System.getProperty("user.home") + File.separator + "/resources/CherryBoom.png"); 

現在,話雖如此,我會強烈建議您使用ImageIO超過ImageIcon爲出問題的時候,你將得到更好的反饋。

退房Reading/Loading an Image

+0

我正在努力,我試圖在一個單獨的類中構建ImageIO構造函數,並且我將嘗試使用它。我希望它能起作用。順便說一句,謝謝:D。 – Mandygir

相關問題