Java에서 일정 데이터베이스 폴링이 필요한 시스템 트레이 UI가 있습니다. 새 스레드를 생성하고 UI를 알리는 가장 좋은 방법은 무엇입니까?스윙 : 예약 된 스레드에서 UI로 값을 다시 전달
저는 스윙을 처음 접했고 스레딩 모델입니다.
Java에서 일정 데이터베이스 폴링이 필요한 시스템 트레이 UI가 있습니다. 새 스레드를 생성하고 UI를 알리는 가장 좋은 방법은 무엇입니까?스윙 : 예약 된 스레드에서 UI로 값을 다시 전달
저는 스윙을 처음 접했고 스레딩 모델입니다.
SwingWorker
은이를 수행하기위한 것입니다.
GUI를 차단하지 않는 작업을 실행 한 다음 값을 반환하고 완료되면 GUI를 업데이트 할 수 있습니다.
Java SwingWorker
사용 방법은 great tutorial입니다.
기본적으로 데이터베이스는 doInBackground()
메서드에서 가져옵니다. 그리고 done()
방법에서 GUI를 업데이트하십시오.
jingy가 언급했듯이 SwingWorker는 처음 보는 사람이되어야합니다. Wikipedia에는 JavaDocs를 다루기 전에 살펴볼 흥미로운 예제가 몇 가지있다.
jingngu가 언급했듯이, SwingWorker는 여기에서 복잡성을 추상화하는 데 도움이되지만, 기본적으로 새 스레드에서 작업을 수행하고 메소드가 돌아 오면 스윙 스레드에서 GUI를 업데이트해야합니다. SwingWorker를 사용하지 않는 경우 기본 메서드는 SwingUtilities (또는 EventQueue) .invokeLater (Runnable)입니다.
스윙 큐 외부에 스윙 관련 (모델 포함)이 있으면 예측할 수없는 일이 발생합니다. 대기열에 대한 참조를 보유하지 않고 대기열이 일시 중단되고 대체되면 (예 : 모델 대화 상자를 여는 경우) 사용하지 마십시오.
위키 피 디아가 'SwingWorker'에 대해 위대한 기사를 가지고 있다는 것을 결코 알지 못합니다. 나는 너를 업신 여긴하지만, 나는 정렬 순서 위에 내 자리를 잃고 싶지 않다 ... (미안) – jjnguy
거기 가라. '+ 1'! – jjnguy
Grr, 그러나 만약 당신이 계속 upvotes를 얻는다면 나는 결코 당신을 'Questions tagged Java' ': P' – jjnguy