我有一個列表用戶的朋友的表視圖,我需要每5秒更新一次數據從數據庫中檢索。如何更新JavaFX之外的TableView項目線程
這是我使用的代碼:
Main.java
private List<Friend> userFriends;
FX控制器:
ObservableList<FriendWrapper> friendList = FXCollections.observableList(
new ArrayList<FriendWrapper>());
private void updateFriendList() {
new Thread(new Runnable() {
public void run() {
while (Params.loggedUser != null) {
Main.setUserFriends(Params.dao.listUserFriends(Params.loggedUser));
friendList.clear();
for (Friend friend : Main.getUserFriends()) {
friendList.add(new FriendWrapper(friend.getFriendName(), friend.getOnline(), friend.getFriendId(), friend.getWelcomeMessage()));
}
Params.dao.updateOnlineStatus(Params.loggedUser, 3);
try {
Thread.sleep(1000 * 5);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}, "updateFriendList").start();
}
Friend
是數據庫模型。 FriendWrapper
是用於表格行的對象。
但是我得到的線IllegalStateException: Not on FX application thread
friendList.clear();
我怎樣才能改變TableView中的項目在後臺運行的線程?
http://docs.oracle.com/javafx/2/api/javafx/application/Platform.html#runLater%28java.lang。 Runnable%29 – rns 2015-02-11 11:56:39