2014-03-24 1 views
1

나는 (CAN 게이트 웨이에서 온 메시지 인) TCP 소켓에서 오는 메시지 (줄)를 가지고있다. 선택한 메시지에서 선택 및 구문 분석을 한 후 스윙 GUI 양식 (예 : Netbeans에서 생성)을 업데이트하고 싶습니다.자바 : 소켓에서 이벤트를 생성하는 방법 readline()?

스윙 업데이트는 이벤트 핸들러에서 구동되어야하며 많은 예제가 있지만 읽는 소켓 데이터 (또는 직렬 포트)가 아닌 버튼 푸시, 슬라이더 변경 등을 기반으로합니다. 소켓의 'readline'처리를 이벤트 생성을 위해 만들 필요가있는 것처럼 보입니다. 그러나 예제를 찾지 못했고 일반적인 문제 여야하고 잘못된 트랙에있을 수도 있습니다. 더 간단한 대안이 될 수있다.

답변

1

SwingUtilities.invokeLater()을 사용하여 swing 이벤트 스레드에서 임의의 코드를 실행하십시오.

String stuff = socket.readLine(); 
    if (myStuff(stuff)) { 
     SwingUtilities.invokeLater(new Runnable() { 
      public void run() { 
       // do any updates to swing ui here 
      } 
     }); 
    } 
+0

"이해할 수있는대로 // 모든 업데이트 수행 ..."코드는 스윙 이벤트 발송 스레드에서 실행되도록 대기합니다. 업데이트가 일부 차트에 값을 보내지 만 차트가 업데이트를 완료하기 전에 새 소켓 행과 결과 값이 있다고 가정합니다. 가까운 '실행'이 EDT 대기열에 있고 첫 번째 완료와 동시에 업데이트가 시작된다는 것은 사실입니까? – user3304253

+0

@ user3304253 : 예, 모든 이벤트가 대기 중입니다. –

관련 문제