【问题标题】:Set Condition for JTable, Java为 JTable、Java 设置条件
【发布时间】:2013-03-18 12:26:17
【问题描述】:

我有一个有 4 列的 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 个选项批准者和高级经理,我正在寻找一种添加条件的方法,表格中只有一个高级经理?

【问题讨论】:

  • 请问I am looking for a way to add condition as, only one senior manager in the table?是什么@嗯,看看我的question about prepareEditor
  • 请出示证明问题的SSCCE

标签: java swing jtable jcombobox


【解决方案1】:

您应该在您的域内处理此问题(例如,在您维护加载到 tableModel 中的数据的任何地方添加一个约束)并限制那里的高级管理人员的数量。这是业务逻辑,不要在你的 GUI 中实现它。

【讨论】:

  • 感谢您的回答,我使用业务逻辑执行此操作,但是当用户一次添加新员工并更改状态时条件失败,它不起作用。 @Jeroen:我知道你的意思,但我认为在 GUI 中实现它是个好主意。我想试试 GUI
【解决方案2】:

假设您的 TableModel 以一致的状态开始,例如不超过一位高级经理,目标是在编辑第三列中的单元格时保持该不变性。困难的部分是确保TableModel 的听众看到任何相关的变化。一种方法是使用对象管理器,如@Guillaume Polet 的example 所示。当托管对象更改状态时,管理器会触发PropertyChangeEvent 以通知正在侦听的TableModelTableModel 反过来通过fireTableRowsUpdated() 通知任何已注册的TableModelListener,例如JTable 本身。

【讨论】:

    猜你喜欢
    • 2010-10-31
    • 2012-09-15
    • 2015-09-13
    • 2012-04-07
    • 1970-01-01
    • 2013-03-29
    • 1970-01-01
    • 1970-01-01
    • 2019-05-09
    相关资源
    最近更新 更多