Javafx 中的后台 TCP/IP 连接
background TCP/IP connection in Javafx
我正在尝试使用 TCP/IP 连接在 javafx 中制作带有多人游戏选项的游戏。我创建了一个在后台处理连接的线程,以便它可以在用户离线玩游戏时监听连接。如果有人尝试连接,我希望线程在主 javafx 应用程序上触发一个按钮。问题是我无法在另一个线程上修改 UI。我尝试使用 Task<>
、platform.runlater
和 Timeline
没有效果。
Thread thread = new Thread(){
public void run(){
try {
int ServerPort=6779;
ServerSocket serverSocket = new ServerSocket(ServerPort);
System.out.println("waiting for player to join");
Socket connectionSocket = serverSocket.accept();
ObjectOutputStream outToServer1 = new ObjectOutputStream(connectionSocket.getOutputStream());
System.out.println("connected");
Board boardJ = new BoardM();
outToServer1.writeObject(boardJ);
boardS=boardJ;
ServerBoard.fire();
} catch (IOException ex) {
Logger.getLogger(JavaFXApplication1.class.getName()).log(Level.SEVERE, null, ex);
}
}
};
thread.start();
线程在这里没问题。您需要做的是将按钮的触发包装在 Platform.runLater 调用中。
我正在尝试使用 TCP/IP 连接在 javafx 中制作带有多人游戏选项的游戏。我创建了一个在后台处理连接的线程,以便它可以在用户离线玩游戏时监听连接。如果有人尝试连接,我希望线程在主 javafx 应用程序上触发一个按钮。问题是我无法在另一个线程上修改 UI。我尝试使用 Task<>
、platform.runlater
和 Timeline
没有效果。
Thread thread = new Thread(){
public void run(){
try {
int ServerPort=6779;
ServerSocket serverSocket = new ServerSocket(ServerPort);
System.out.println("waiting for player to join");
Socket connectionSocket = serverSocket.accept();
ObjectOutputStream outToServer1 = new ObjectOutputStream(connectionSocket.getOutputStream());
System.out.println("connected");
Board boardJ = new BoardM();
outToServer1.writeObject(boardJ);
boardS=boardJ;
ServerBoard.fire();
} catch (IOException ex) {
Logger.getLogger(JavaFXApplication1.class.getName()).log(Level.SEVERE, null, ex);
}
}
};
thread.start();
线程在这里没问题。您需要做的是将按钮的触发包装在 Platform.runLater 调用中。