1

我使用SwingWorker根据数据库中的更改来更改DefaultTableModel。我的问题是:是否可以将ListSelectionListener和TableModelListener添加到doInBackground()中的DefaultTableModel中,还是必须将它们添加到done()中?将监听器添加到DefaultTableModel

回答

3

以任何方式修改任何GUI组件的任何操作应该在EDT上执行。您应该在done中添加听众。

+3

+1似乎[根据Swing Worker文档](http://docs.oracle.com/javase/7/docs/api/javax/swing/SwingWorker.html#publish(V ...))'DefaultTableModel '并且所有的Swing组件也可以在'process(..)'中修改/添加,而不需要'SwingUtilities.invokeXXX'块。 – 2013-03-03 18:43:57

+1

@DavidKroukamp ['process'](http://docs.oracle.com/javase/7/docs/api/javax/swing/SwingWorker.html#process(java.util.List))方法在EDT,因此在这里添加监听器也是非常好的。 – Jeffrey 2013-03-03 19:59:27