【发布时间】:2014-04-22 02:18:37
【问题描述】:
我正在开发一个用 javaFX+java 编写的 Omaha 在线扑克客户端。
control.call() 执行完毕后,我需要显示一个包含 3 个按钮的 anchorPane。 我知道 control.call() 执行完毕,但由于某种原因task.setOnSucceeded(new EventHandler() { 的句柄方法没有更新用户界面。
我做错了什么?
public void newRound() {
sog = StateOfGame.PREFLOP;
ControlGameOnNewThread control = new ControlGameOnNewThread();
Task task = new Task() {
@Override
protected Object call() throws Exception {
control.call();
return null;
}
};
task.setOnSucceeded(new EventHandler() {
@Override
public void handle(Event event) {
if (client.getAction() == FirstToAct.me) {
System.out.println("Task finsished");
showOptions(client.getToCall());
opponentBetField.setText(new Integer(opp.chipsInvested).toString());
myBetField.setText(new Integer(client.chipsInvested).toString());
System.out.println("Task finsished");
}
}
});
new Thread(task).start();
}
【问题讨论】:
-
你确定你的
call(...)方法是成功的,而不是抛出一个异常?尝试用task.getException().printStackTrace()注册setOnFailed(...)处理程序,看看是否有东西被抛出。
标签: java multithreading concurrency javafx task