2013-04-15 2 views
0

Java에서 프로세서 카운터 시뮬레이션에 문제가 있습니다. 예를 들어 0에서 6까지 계산하고 텍스트 필드에 현재 값 (0, 1, 2, 3, 4, 5, 6)을 표시하려고합니다. "Count"버튼을 클릭하면 프로그램이 잠시 멈추고 Text 필드에서 숫자 6을 볼 수 있습니다. 계산 중에 다른 숫자를보고 싶습니다. 다음은 내 코드의 일부입니다.Java에서 계산 - 텍스트 필드에 마지막 값만 표시됩니다.

for (int b=0; b<30; b++) 
     { 
      counter2.Count(); 
      try { 
        Thread.sleep(300); 
       } catch(InterruptedException e){} 
      text6.setText("TEST" + counter2.MainReg); } 

어떻게해야합니까? 도와 주셔서 감사합니다.

답변

7

작업자 스레드 중 하나에 계산을 넣어야합니다. 오라클에서 :

스윙 프로그램이 장기 실행 작업을 실행해야

, 그것은 일반적으로 또한 백그라운드 스레드로 알려진 작업자 스레드 중 하나를 사용합니다. 작업자 스레드에서 실행중인 각 작업은 javax.swing.SwingWorker 인스턴스로 표시됩니다. SwingWorker 자체는 추상 클래스입니다. 은 SwingWorker 객체를 생성하기 위해 서브 클래스를 정의해야합니다. 익명 내부 클래스는 매우 간단한 SwingWorker 객체를 만드는 데 종종 유용합니다.

여기에 링크의 당신은에 가서 그것을하는 방법을 배울 수 있습니다 :

http://docs.oracle.com/javase/tutorial/uiswing/concurrency/worker.html

가 여기에 SwingWorker의 클래스의 메소드를 구현하는 방법에 대한 오라클의 예입니다. http://docs.oracle.com/javase/tutorial/uiswing/concurrency/interim.html

편집 :이 과정은 당신이 오라클에서 다음의 예를 따를 수있는 일이 같은 결과를 볼 수 있기를 원하기 때문에 http://docs.oracle.com/javase/tutorial/uiswing/concurrency/simple.html

아래의 코멘트에 mKorbel에 의해 제안으로, 당신은 또한 같은 스윙 타이머를 사용할 수 있습니다 http://docs.oracle.com/javase/tutorial/uiswing/misc/timer.html

+2

+1 또는 스윙 타이머 – mKorbel

+0

많은 작업이 있습니까? 새 클래스를 정의했거나 GUI 클래스 만 수정 했습니까? – Martyn

+1

@ user2283763 아니 많은 작품. SwingWorker 클래스의 메서드를 구현하는 방법에 대한 오라클의 사례를 보려면 제공된 두 번째 링크로 이동하십시오. 또는이 작업을 위해 스윙 타이머를 사용하려면 마지막 링크로 이동하십시오. 어느 쪽이든, 오라클의 해당 페이지에서 간단한 단계를 따라하면 프로그램이 정상적으로 작동합니다. 이미 가지고있는 수업에서이 모든 것을 할 수 있습니다. –

관련 문제