【发布时间】:2015-04-11 18:21:02
【问题描述】:
我有一个列出用户朋友的表格视图,我需要每 5 秒使用从数据库中检索到的数据对其进行更新。
这是我使用的代码:
Main.java
private List<Friend> userFriends;
特效控制器:
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 是用于表行的对象。
但是我在friendList.clear(); 在线得到IllegalStateException: Not on FX application thread
如何从后台运行的线程中更改 TableView 的项目?
【问题讨论】:
标签: java multithreading exception javafx