2016-12-07 4 views
0

TCP/IP 연결을 사용하여 javafx에서 멀티 플레이어 옵션으로 게임을 만들려고합니다. 백그라운드에서 연결을 처리하는 스레드를 만들어 사용자가 오프라인으로 재생하는 동안 연결을 수신합니다. 누군가가 연결하려고하면 기본 javafx 응용 프로그램에서 단추 스레드 화재 싶습니다. 문제는 다른 스레드에서 UI를 수정할 수 없다는 것입니다. Task<>, platform.runlaterTimeline을 사용해 보았습니다.배경 Javafx의 TCP/IP 연결

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(); 
+0

아마도 Platform.runLater가 여기에 오는 방법 일 수는 있지만 여기에 시도해 보지 않으시겠습니까? – mipa

+0

코드는 거의 같습니다. 방금 다른 사소한 필요한 변경 사항이있는 Platform.runLater 스레드를 변경했습니다. –

답변

1

스레드가 여기에 있습니다. 당신이해야 할 일은 Platform.runLater 호출에서 버튼의 발사를 래핑하는 것입니다.

+0

그건 속임수 였어. 고맙습니다!!! –