2011-11-23 89 views
0

我有我insterting到我的JPanel的JLabel列表:爪哇 - 如何使用方法

avatarGridPanel.add(new JLabel(new ImageIcon("images/gui/orc_male.png", "Orc Male"))); 
avatarGridPanel.add(new JLabel(new ImageIcon("images/gui/human_male.png", "Human Male"))); 
avatarGridPanel.add(new JLabel(new ImageIcon("images/gui/tundrian_male.png", "Tundrian Male"))); 
avatarGridPanel.add(new JLabel(new ImageIcon("images/gui/brimlock_male.png", "Brimlock Male"))); 

我想爲toolTipText添加到每個人。有沒有更好的方法比使用臨時變量來保存其中一個值,然後繼續使用它?

JLabel temp = new JLabel(); 
temp = new JLabel(new ImageIcon("images/gui/human_male.png", "Human Male")); 
temp.setToolTipText("Human Male"); 
avatarGridPanel.add(temp); 

我試着做這樣的事情(下面),但不能得到它的工作。謝謝你的幫助!

avatarGridPanel.add(new JLabel(new ImageIcon("images/gui/human_male.png", "Human Male")).setToolTipText("Human Male")); 
+1

是否有任何理由不想保留對它們的引用?因此,有'JLabel myLabel1 =新的JLabel(等等);'爲他們每個人,然後使用這些引用來添加工具提示? –

+0

我得到的錯誤是:類型Container中的方法add(Component)不適用於參數(void) – KisnardOnline

+0

dann.dev:是因爲我不需要繼續引用它們。我想保持我的代碼整潔和組織 – KisnardOnline

回答

2

你可以創建一個函數來創建這些你。我這樣做,有時當我有一個大陣列,需要同樣的事情一遍又一遍:

private static JLabel makeLabel(String path, String name) { 
    JLabel label = new JLabel(new ImageIcon(path, name)); 
    label.setToolTipText(name); 
    return label; 
} 

然後在類的其他地方:

avatarGridPanel.add(makeLabel("images/gui/orc_male.png", "Orc Male")); 
+0

謝謝這是我會做的,然後非常感謝。我不確定是否有更好的捷徑,但這必須做。 – KisnardOnline

0

有一種方法可以在一條線上做到這一點,但沒有什麼真正的乾淨和優雅。

無論如何,在大多數情況下,創建類的新實例並不將它們存儲在至少一個局部變量(即使是臨時使用)中也不是一個好主意。

所以,這裏要做的最好的事情是讓這個temp變量或委託給其他東西(方法/構建器)。

2

您可以創建一個方法,在其中傳遞圖像位置,文本和工具提示文本以避免所有代碼重複。

這應該工作

private static JLabel createImageLabel(String imageLocation, String name, String toolTipText) { 
    JLabel temp = new JLabel(new ImageIcon(imageLocation, name)); 
    temp.setToolTipText(toolTipText); 
    return temp; 
} 
2

您可以使用「TEMP」變量,但如果你不想先創建一個空的JLabel,然後在這之後創建一個帶有圖標和文本的新JLabel。

但是如何創建一個輔助方法?

... 
avatarGridPanel.add(createLabel("images/gui/human_male.png", "Human Male")); 
... 

private JLabel createLabel(String iconPath, String description) { 
    JLabel label = new JLabel(new ImageIcon(iconPath, description)); 
    label.setToolTipText(description); 
    return label; 
}