我在Java中编写Swing代码。我正在使用Netbeans布局管理器。我遇到了jTable的问题。我已经应用了一个扩展了AbstractTableModel的客户模型。我希望第三列以复选框的形式包含布尔值(我已成功完成)。我有JTable的对话框实现了TableModelListener。我的tableChanged()方法只有下面的代码:System.out.println("Table changed!");
但是,每当我尝试检查其中一个复选框时,它会执行一点“抑制”操作,当我单击并按住时,那么当我释放时,它不会更改复选框的状态。它也不打印出“表格已经改变!”这一直让我疯狂。我已阅读所有关于它的内容,但无法弄清楚为什么我的工作不正常。请帮忙。下面是相关的代码:swing tableChanged()不响应表更改
在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
感谢您的帮助!
发布您的[SSCCE](http://www.sscce.org),演示该问题。并从DefaultTableModel开始,而不是您自定义的TableModel来帮助缩小问题的范围。 – camickr
感谢您的提示。我不确定如何更好地实施SSCCE标准。我正在切换到DefaultTableModel。它现在正在触发tableChanged()方法,但现在我很难将第三列设置为布尔值复选框,而不是使用“false”或“true”字符串 – kentcdodds
要显示复选框,请覆盖JTable的getColumnClass()方法或DefaultTableModel为列返回Boolean.class,表格将选择适当的渲染器和编辑器。 – camickr