JCombobox值爲對象的用法

這兩天用到JCombobox,之前一直是直接添加字符串值,但是這樣顯示出來太不友好,例如原本可以顯示爲“是”、“否”的,卻顯示爲“0”、“1”。所以需要改變這種情況。網上搜了一下,有人擴展了一個KeyedComboboxModel,但是顯示的還是value的值。

摸索了一下,可以直接將數據模型對象添加到DefaultComboBoxModel中。只需要注意兩點:

1、在數據模型對象中覆蓋一個toString方法,返回用於在JCombobox中作爲顯示的成員變量。

	/* (non-Javadoc)
	 * @see java.lang.Object#toString()
	 */
	@Override
	public String toString() {
		return name;
	}

 

2、在設置JCombobox選中項時用以下語句:

getJComboBoxJob().getModel().setSelectedItem(bean);

 

原因分析:

查看JComboBox類Line:543,在進行元素匹配時用的是equals,只對字符串元素有效。

if (anObject.equals(element)) {

 而上面正確的用法則會直接將當前選中元素指針指向你傳入的元素。見DefaultComboBoxModel類Line:87。

selectedObject = anObject;

 

發佈了70 篇原創文章 · 獲贊 2 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章