2013-03-18 28 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本身。