netbeans에서 응용 프로그램을 만들고 있는데, 주어진 순간에 프로그램에서 무슨 일이 벌어지고 있는지 알려주는 상태 레이블을 갖고 싶습니다. 엄청난 양의 코드가 있지만, 여기에는 꽤 많이 있습니다. 단지 statusLabel이 이미 프로그램에 들어있는 레이블이고 각 함수는 몇 초가 걸리는 고가의 함수 인 것처럼 가장합니다.레이블을 업데이트하여 새 텍스트를 표시하는 방법은 무엇입니까?
statusLabel.setText("Completing Task 1");
System.out.println("Completing Task 1");
this.getFrame().repaint(); //I call this function and the two functions below it but the label still does not change.
statusLabel.updateUI(); //Doesn't seem to do much.
statusLabel.revalidate(); //Doesn't seem to do much.
this.completeTask1();
statusLabel.setText("Completing Task 2");
System.out.println("Completing Task 2");
statusLabel.revalidate();
this.getFrame().repaint();
...
UI가 4 가지 작업을 완료 할 때까지 계속됩니다. 전체 프로세스 동안 레이블은 모든 단일 작업이 완료 될 때까지 업데이트되지 않으며 "작업 4 완료"라고 표시됩니다. System.out.println 호출은 완벽하게 작동합니다. 기본적으로 레이블에 새 텍스트가 표시되도록하려면 어떻게해야하는지 궁금합니다.
이렇게하려면 멀티 스레딩이 필요합니다. 완료 될 때까지 GUI가 업데이트되지 않을 유일한 스레드가 "백그라운드"에서 실행중인 다른 코드를 실행하는 데 사용되기 때문에 레이블이 업데이트되지 않습니다. 멀티 스레딩이 필요할 때 사용되지 않을 때 자주 발생하는 문제. 다음은 [Concurrency] (http://docs.oracle.com/javase/tutorial/essential/concurrency/)에 대한 Java Oracle 튜토리얼입니다. 문제를 해결하기 위해 알아야 할 멀티 스레딩에 대한 모든 것을 갖추고 있으며 완벽합니다. 프로그래밍의 더 어렵고 필요한 개념 중 하나에 대해 학습하기 시작합니다. http://docs.oracle.com/j – CODe