我在Java的JTable中使用了changeSelection(int row,int column,boolean toggle,boolean extend)。我已经做到这一点,当表格有一个复选框列并且单击该列时,会发送一个事件来显示现在检查/取消选中该行,当用户完成该操作时就可以了。但是当它以编程方式完成时,事件被触发但JTable不刷新渲染器,我应该添加其他东西。它应该显示现在复选框被勾选但没有。
这是我用来以编程方式触发事件的代码。
boolean success = editCellAt(row, col); // col is a known checkbox column number
if (success) {
changeSelection(row, col, true, false);
}
此后的内容是什么?该事件触发,但渲染器未显示现在复选框已检查是否未选中,反之亦然
答案 0 :(得分:0)
表数据存储在TableModel
中,这是Swing中的MVC
模式到JTable
,以及您需要处理的内容,因此如果您想要更新您需要fireTableCellUpdated
AbstractTableModel
的{{1}}表。
所以你可能想做这样的事情:
public class MyTableModel extends AbstractTableModel {
//implements the needed methods.
@Override
public void setValueAt(Object value, int rowIndex, int columnIndex) {
//code
fireTableCellUpdated(rowIndex, columnIndex);
}
}