我正在从另一个类开始一个 JavaFX gui 应用程序,即StartClient
通过做。
public class StartClient extends Application {
private Table gui;
@Override
public void start(Stage stage) throws Exception {
gui = new Table();
gui.start(stage);
我Task
通过它连接到服务器并接收服务器分配的轮次,我在 gui 中使用Platform.runLater
.
Task<Void> task = new Task<Void>() {
@Override
protected Void call() throws Exception {
connectToServer(); // connect to server, set up socket, i/o streams
Object read = inputStream.readObject();
if (read instanceof String) {
turn = //parseInt from read
Platform.runLater(new Runnable() {
public void run() {
gui.setPlayerID(turn);
}
});
}
}
}; //end of task
我的问题是,如果轮到他们,我想让玩家做出移动并将其发送回服务器,执行如下操作:
if(networkClientID == gui.getState().getTurn()){
do {
action = Table.getAction(); //static getAction returns the move from the table if there was one
} while (action == -1);
outputStream.writeObject(action + ""); // write out turn
}
我是否在后台执行此操作Thread
(我正在从 gui 读取静态变量,或者我应该在 javaFX 线程中执行此操作,即内部Platform.runLater
,我已经尝试过,但没有得到任何地方,我的程序卡住了。)
任何建议,帮助,欢迎就如何解决这个问题提出建议。谢谢!