0
我有一個函數可以創建一個使用複選框的通用TabelModel。但是,當我多次調用此方法時,我發現兩個表中的CheckBox都相互干擾(單擊一個表,另一個表也單擊)。帶複選框的Java多表模型相互干擾
什麼可能導致引用相互碰撞?
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());
即使表A和tableB的使用兩種不同的模式(或他們?),當我點擊在tableA的複選框,tableB的也反應了。不知何故,複選框變得糾結。爲什麼會發生?
我會做的第一件事情,如果這是我的問題,我在這裏問的是創建和發佈有效[mcve]我的問題,因爲我知道這將是讓人們完全理解我的問題然後幫助我的最好和最快捷的方式。 –
什麼是數據?這似乎是一個共享資源,所以這兩個表將使用相同的'數據'來源... – MadProgrammer
@MadProgrammer嗯....這可能是共享資源。可能必須重做「getValueAt」方法 – user2494663