【问题标题】:Java Multiple Table Models with CheckBoxes Interfering with each other带有相互干扰的复选框的 Java 多表模型
【发布时间】:2017-05-28 03:21:38
【问题描述】:

我有一个函数可以创建一个使用复选框的通用 TabelModel。但是,当我多次调用此方法时,我发现两个表中的 CheckBox 相互干扰(单击一个表,另一个表也单击)。

什么可能导致引用相互冲突?

private TableModel<Map<String, Object>> createModel() {
    List<Map<String, Object>> list = new ArrayList<>();
    TableModel<Map<String, Object>> model = new TableModel<Map<String, Object>>( list,
                                                                                 Arrays.asList( "Name", "Enabled" ),
                                                                                 Arrays.asList( "Enabled" ), null ) {

        @Override
        public Object getValueAt( int row, int column ) {
            final Map<String, Object> object = data.get( row );
            return object.get( columnNames.get( column ) );
        }

        @Override
        public Class<?> getColumnClass( int col ) {
            if ( col == 1 ) {
                return Boolean.class;
            }
            return super.getColumnClass( col );
        }

        @Override
        public void setValueAt( Object aValue, int row, int column ) {
            final Map<String, Object> object = data.get( row );
            object.put( columnNames.get( column ), aValue );
            fireTableCellUpdated( row, column );
        }
    };
    return model;
}
JTable tableA = new JTable ( createModel());
JTable tableB = new JTable ( createModel());

即使 tableA 和 tableB 使用两个不同的模型(或者是吗?),当我单击 tableA 中的复选框时,tableB 也会对其做出反应。不知何故,复选框变得纠缠不清。为什么会这样?

【问题讨论】:

  • 如果这是我的问题并且我在这里提出的问题,我要做的第一件事就是创建并发布一个有效的minimal reproducible example 并附上我的问题,因为我知道这将是让人们充分了解我的问题并为我提供帮助的最好和最快的方法。
  • data 是什么?这似乎是一个共享资源,因此两个表将使用相同的 data 源...
  • @MadProgrammer 嗯....这可能是共享资源。可能需要重做“getValueAt”方法
  • 或者复制data 并传递给create方法..

标签: java swing checkbox jtable tablemodel


【解决方案1】:

字段“数据”正在填充完全相同的对象,本例是地图。数据只是一个对象,它保存着这个模型所保存的任何数据。 MadProgrammer 是正确的,数据是共享的,解决方案是将数据单独加载到表中

【讨论】:

    猜你喜欢
    • 2013-05-09
    • 1970-01-01
    • 2013-05-27
    • 1970-01-01
    • 2019-12-22
    • 1970-01-01
    • 1970-01-01
    • 2013-04-27
    • 1970-01-01
    相关资源
    最近更新 更多