2015-07-10 60 views
0

愉快的一天你 我有JComboBox的一個由對象從數據庫填充它,它做工精細與此代碼:從對象中獲取價值,並在JComboBox中添加

final JComboBox pruCompanyCB = new JComboBox(DAOFactory.getInstance() 
          .getPruComanyDAOImpl().findAll().toArray()); 
pruCompanyCB.addActionListener(new ActionListener() { 
    public void actionPerformed(ActionEvent arg0) { 
     JComboBox comboBox = (JComboBox) arg0.getSource(); 
     PruCompany pruCompany = (PruCompany) comboBox.getSelectedItem(); 
     CRSevice.getInstance().getPruCompanySrv().setPruCompany(pruCompany); 

,並使用下面的代碼來獲取所選

car.setPruCompany((PruCompany) pruCompanyCB.getSelectedItem()); 

但在組合框中GUI項目時,出現像

PruCompany {ID = 1,國家=國家{ID = 4,名稱= 「美國」}}

喜歡對象的toString()格式

如何從pruCompany對象的getName()和只顯示在沒有變化的toString()模型類 任何方式請 問候方法組合框的名字,並希望

回答

1

另一種方法是創建一個定製渲染器顯示從添加到的ComboBoxModel對象的特定屬性。

Combo Box With Custom Render給出瞭如何創建自定義渲染器的示例。

大多數人在創建自定義渲染器時忘記實現自定義KeySelectionManager,因此可以使用鍵盤而不僅僅是鼠標來完成項目的選擇。上述鏈接中使用的渲染器也支持此功能。

1

你的問題來自JComboBox使用其成員的toString()方法 創建GUI文本輸出的事實。

所以你必須覆蓋PruCompany類中的toString()方法,如果你想 想快速改變這個行爲。

如果你有更多的時間或toString()方法PruCompany的 是非常重要的,你可以實現一個輔助類 和覆蓋其toString()方法。

此ComboItem的標籤屬性將顯示在GUI 上,但您必須創建帶有ComboItem對象數組 的JComboBox以實現該效果。

欲瞭解更多信息,請看there

public class ComboItem { 
    private String value; 
    private String label; 

    public ComboItem(String value, String label) { 
     this.value = value; 
     this.label = label; 
    } 

    public String getValue() { 
     return this.value; 
    } 

    public String getLabel() { 
     return this.label; 
    } 

    @Override 
    public String toString() { 
     return label; 
    } 
}