2015-06-05 47 views
0

我有一個JTable。 JTable中的一列被分配一個擴展的TableCellEditor,用於顯示擴展的JComboBox。是否只調用一次自定義的TableCellEditor構造函數?

有一個固定的100個填充組合框的String對象的列表。

挑戰:

  • 設計的JComboBoxes讓任何選擇是相對於其他盒子獨特之處?也就是說,如果從第一行的組合框中選擇「A」,它將自動從每個其他組合框的列表中刪除。
  • 當一個新房間被添加到表格中時,它包含的組合框應自動填充到第一個可用列表項目。

問題: 我的組合框工作得很好。我可以隨意選擇項目。我甚至在清除已經使用過的物品方面取得了一些進展。但我無法弄清楚如何正確自動填充。

我很困惑,因爲看起來我的組合框的構造函數只在表創建時調用一次,而不是每一行都調用一次。

這是這種情況? TableCellEditor的構造函數是否只能調用一次?如果是這樣,如何修改每個組合框的存在行爲?

感謝您的幫助!

如果你想要特定的代碼,請讓我知道。我不知道你是否想讓我粘貼整個課程。

+0

我們不希望您的整個代碼庫。如果你能舉一個簡短的例子來說明問題,那麼儘可能少的類和方法,這將是一個很大的幫助。 – markspace

+0

'TableCellEditor的構造函數是否只能調用一次? - 任何對象的構造函數僅在創建對象時調用一次。 '我的組合框構造函數只在創建表時調用一次,而不是在每行中調用一次。「 - 使用編輯器和渲染器的要點是表由該表共享類,以最大限度地減少創建的對象的數量。 – camickr

回答

0

我能夠解決我的問題,爲我的組合框創建一個抽象超類,當它設置其數據時,可以從tablemodel擴展中訪問它。

1

當一個新的房間被添加到表中時,它包含的組合框應自動填充到第一個可用列表項。

當您向TableModel添加新的數據行時,您必須添加行中所有列的值。這不應該是編輯的功能。該編輯器允許您更改單元格中的值。

相關問題