我想有效地對JavaFX TableView進行「輪詢」,以便如果另一個用戶在數據庫中創建一個作業,當前用戶會選擇它(比如說每隔5秒)。定期刷新JavaFX TableView
我試過使用Timer;
new Timer().schedule(new TimerTask() {
@Override
public void run() {
try {
newI(connection, finalQuery, adminID);
} catch (SQLException e) {
e.printStackTrace();
}
}
}, 0, 5000);
然而這得到了以下錯誤:Exception in thread "Timer-0" java.lang.IllegalStateException: This operation is permitted on the event thread only; currentThread = Timer-0
我假設意味着它不是在JavaFX的支持?我如何能夠定期更新JavaFX中的TableView?
這並不意味着它不是在JavaFX的支持。這意味着您正在從後臺線程更新某些內容,而不是從FX應用程序線程中更新。考慮使用['ScheduledService'](http://docs.oracle.com/javase/8/javafx/api/javafx/concurrent/ScheduledService.html)而不是定時器,並閱讀多線程和JavaFX(例如http ://docs.oracle.com/javase/8/javafx/interoperability-tutorial/concurrency.htm#JFXIP546或http://stackoverflow.com/questions/30249493/using-threads-to-make-database-requests或many其他來源) –