我在Java中使用Swing进行编码。我正在使用Netbeans布局管理器。我在使用jTable时遇到了麻烦。我已经将一个客户模型应用于它,它扩展了AbstractTableModel。我希望第三列以复选框的形式包含布尔值(我已成功完成)。我在实现TableModelListener时使用jTable的对话框。我的tableChanged()方法只有以下代码:System.out.println("Table changed!");
但是,每当我尝试检查其中一个复选框时,当我单击并按住时,它会执行一些“抑制”操作,然后当我释放时,它不会更改复选框的状态。它也没有打印出来“桌子已经改变了!”这让我发疯了。我已经阅读了所有相关信息,但无法弄清楚为什么我的工作无效。请帮忙。这是相关的代码:
在jDialog构造函数中:
this.chapterTableModel = new ChapterTableModel(chapterList);
chapterTableModel.addTableModelListener(this);
然后执行此操作的方法:chapterTable.setModel(chapterTableModel);
然后在我的构造函数下面,我有这个方法:
@Override
public void tableChanged(TableModelEvent tme) {
System.out.println("Table Changed!");
}
可在此处找到整个代码:http://collabedit.com/ttcds 在这里:http://collabedit.com/qn3kx
提前感谢您的帮助!
答案 0 :(得分:3)
你是否在ChapterTableModel的mutators中调用了一个父AbstractTableModel类的fire-methods?
答案 1 :(得分:2)
您没有在任何地方覆盖setValueAt,因此表格中的值不会被更改。