2015-11-24 85 views
0

我很遺憾,我確信它非常簡單。非常簡單的JCombobox單元格編輯器問題

我有一個帶有對象的Jcombobox單元編輯器,可以說'客戶'。 客戶有'代碼'和'描述'。 客戶的toString已被覆蓋返回'code'。

我在表格中有兩個單元格,希望一個列出代碼,一個列出說明。這兩個組合框列表都填充了Customer對象,都返回CODE。我如何製作第二個組合框展示說明?

我試着創建一個新的子類,它重寫toString方法並填充第二個組合框,但爲了將值加載到新的子類型中,我必須重新創建數據並創建新的子類或者在'customer'對象上實現一個克隆方法,我每次添加一個新變量都必須更新。

有沒有簡單的方法來覆蓋jcombobox渲染器?

謝謝

回答

2

是否有一種重寫jcombobox渲染器的簡單方法?

您需要創建自己的自定義渲染器來渲染Customer對象的特定屬性。

渲染器的一般形式是:

class FooRenderer extends BasicComboBoxRenderer 
{ 
    public Component getListCellRendererComponent(
     JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) 
    { 
     super.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus); 

     if (value instanceof Foo) 
     { 
      Foo foo = (Foo)value; 
      setText(foo.getDescription()); 
     } 

     return this; 
    } 
} 

退房Combo Box With Custom Renderer的更多信息和更完整的實現。

+0

謝謝。詳細,正是我在找什麼。 – MxMave

1

它會在toString方法中有一個條件語句嗎?這似乎比重寫JComboBox更容易,如果可能的話。

+0

這絕對是最簡單的解決方案。有點亂,不得不爲陣列中的每個元素設置它,但令人難以置信的直接向前! – MxMave