我一直在閱讀Swing教程「如何使用表」,雖然它已經爲JTable新手提供了非常豐富的內容,但我馬上就遇到了障礙,第二次嘗試偏離示例,我自己的。JTable瘋了嗎?
所以,如果你希望你的Swing應用程序有一個漂亮的,定製的桌子,看起來他們是你會在最起碼是工作的幾個核心類:
- JTable中
- 的TableModel
- TableModelListener
- TableModelEvent
- 的TableColumnModel
- TableColumnModelListener
- TableColumnModelEvent
只需從閱讀教程和Javadoc,這不是明擺着給我的區別是什麼TableModel的和TableColumnModel中,以及它們如何相互關聯之間。顯然,列模型僅適用於單列或所有列(?),而表模型更一般。 但是他們如何相互關聯?每個人都負責哪些責任領域? TableModel是否管理,控制或以某種方式包含TableColumnModel?
與第一個問題密切相關,我在哪個模型中指定了單元格編輯器和渲染器?
我認爲,對於這些對象中的每一個,我都應該繼承/實現它們,這樣我就可以爲我的項目定製它們。 這是普遍接受的方式定製表(JTable的「核心」類的子類),還是這些足夠強大的支持任何類型的表創建?
哇@JB尼澤 - 真棒答案!在它逃脫我之前的最後一個問題:我的單元格的類型(取決於表)將是JButtons或JComboBoxes ...所以我假設我將不得不實現我自己的TableCellRenderer,是的?那麼TableCellEditor呢?如果用戶必須單擊JButton或從JComboBox中進行選擇,那麼在技術上不會進行編輯?再次感謝這樣一個真棒迴應! – IAmYourFaja
將按鈕或組合框作爲值有點奇怪,如果有很多行,則效率就不高。關於組合,數據應該是組合的選定值,而組合應該是該列的編輯器。關於按鈕,你應該解釋爲什麼你需要在桌子上放一個按鈕。通常的方法是選擇一行或多行,然後單擊表格外的按鈕以觸發所選行上的操作。 –
Gotchya - 再次感謝! – IAmYourFaja