2013-03-18 83 views
0

我有4列,其中最後一列有一個組合框,設置條件的JTable,爪哇

示例代碼JTable中

String[] colNames = {"Name","Email","Department","Status"}; 
TableModel model = new DefaultTableModel(colNames,200); 
table.setModel(model); 

TableColumn statusCol = table.getColumnModel().getColumn(3); 
comboBox = new JComboBox(); 
comboBox.addItem("Approver"); 
comboBox.addItem("Senior Manager"); 

statusCol.setCellEditor(new DefaultCellEditor(comboBox)); 

這裏下拉框中有2個選項,審批人和高級經理,我我正在尋找一種增加條件的方式,只有一位高級管理人員在表格中工作?

+0

請問什麼'我正在尋找一種方式來添加條件,只有一個高級經理在表中?'嗯看到我的[關於prepareEditor的問題](http://stackoverflow.com/questions/7045851/jtable-how -prepareeditor-works) – mKorbel 2013-03-18 12:34:38

+1

請顯示證明問題的SSCCE – kleopatra 2013-03-18 13:55:37

回答

1

您應該在您的域中處理這個問題(例如,無論您將數據加載到tableModel中的哪個位置,都要添加一個約束)並限制高級管理人員的數量。這是商業邏輯,不要在你的GUI中實現它。

+1

感謝您的回答,我是通過業務邏輯做到這一點的,但是當用戶添加新員工並且一次更改狀態時,該條件失敗,但它不起作用。 @Jeroen:我知道你的意思,但我認爲在GUI中實現它是一個好主意。我想嘗試使用GUI – vijay 2013-03-18 12:35:21

1

假設您的TableModel始於一致的狀態,例如,不超過一名高級經理,目標是在編輯第三列的單元格時保持不變。困難的部分是確保您的TableModel的聽衆看到任何相關的變化。一種方法是使用對象管理器,如@Guillaume Polet在example中所示。管理員觸發PropertyChangeEvent通知監聽TableModel受管對象何時改變狀態。 TableModel又通過fireTableRowsUpdated()通知任何註冊的TableModelListener,例如JTable本身。