2011-07-18 76 views
1

我有一個JComboBox其渲染器是一個JLabelIcon在組合列表中每個項目:僅顯示沒有圖標的JComboBox選定項目文本?

class ComboBoxRenderer extends JLabel implements ListCellRenderer { 
    public Component getListCellRendererComponent(
       JList list, 
       Object comboItemObject, 
       int comboItemIndex, 
       boolean isSelected, 
       boolean cellHasFocus) { 
     String comboItemTitle = (String)comboItemObject; 
     setText(comboItemTitle); 
     setIcon(new ImageIcon(getClass().getResource("/images/myIcon.png"))); 

     return this; 
    } 
} 

當我從ComboBox中選擇一個項目,我只是想顯示在下拉框中選擇的項目文本,而不是項目圖標也。 有沒有辦法可以做到這一點?

回答

3

在渲染代碼,你可以檢查索引。例如:

if (index == -1) 
{ 
    setText(...); 
} 
else 
{ 
    setText(...); 
    setIcon(...); 
} 

此外,由於代碼被頻繁調用,所以您不應該在渲染代碼中讀取圖像。

+0

它看起來就像是對工作的ActionListener,不是的ItemListener +1 – mKorbel

+0

@camickr:是的,它的工作原理......非常感謝。只是爲了理解這一點:當我說(索引== -1)它呈現ComboBox的編輯器&不彈出或什麼? – Brad

1

,那麼你必須重寫isSelected,並extends JLabel是沒用的,因爲通過渲染器返回defalult作爲JLabel組件

0

要獲得combobox;中的文字,您只需輸入單行代碼即可。

創建一個變量,因爲我已經打電話給我Combotext

然後從JComboBox得到SelectedItem

ComboText = jComboBox.getSelectedItem(); 
+2

1)'Combotext'和'ComboText'都不符合常用的Java命名法。它應該是'comboText'。 2)'JComboBox'可以包含'Object',所以如果你在'String'之後,有必要調用'jComboBox.getSelectedItem()。toString();' –

+0

不是對這個問題的回答(這是關於不同_rendering_的選擇項目,而不是如何獲得該項目) – kleopatra

+0

一些如何結束在這裏,這就是我一直在尋找:) –

相關問題