我正在使用NetBeans开发JAVA项目。
我使用MysqlDB表绑定JTable。我希望能够通过更改JTable的单元格来更改DB。我怎样才能做到这一点?我试图测试动作监听器,但它不起作用。
public void TableListener()
{
BookList.getModel().addTableModelListener(new TableModelListener() {
//BookList is the name of the JTable.
@Override
public void tableChanged(TableModelEvent tme) {
TableModel tm = (TableModel)tme.getSource();
System.out.println(tm.getColumnCount()+" Hi");
throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
}
});
}
我在JFrame类中创建了这个方法,并在main方法中调用它。它不应该更新数据库,但我只是想知道它是否正常工作。 tm.getColumnCount
未被打印。
如果使用听众是错误的,请告诉我正确的方法。
答案 0 :(得分:0)
好的设计原则说你应该使用一个单独的类(称为DAO或"数据访问对象")来处理与DB的通信。这有助于区分应用程序的问题,并使代码保持清洁和易懂。
您可以使用类似于您的方式的侦听器来调用适当的DAO方法来处理数据库上的CRUD操作。
至于为什么你的TableModelListener没有按预期工作,你已经以一种奇怪的方式设置它,这可能会导致你的问题。请尝试参考此页面:https://docs.oracle.com/javase/tutorial/uiswing/components/table.html#data
请注意,您在TableListener类中定义了一个匿名TableListener:BookList.getModel().addTableModelListener(new TableModelListener() {...}
您可以这样做,但是编写代码示例来自的TableListener没有意义。
基本上,您的问题是您尝试在侦听器类中绑定和使用侦听器。监听器类应该只定义监听器的行为。然后,您应该将侦听器添加到侦听器类的JTable 外部。我想这会解决你的问题。