대부분의 Java 프로그래머가 알고 있듯이 Swing GUI에 대한 업데이트는 AWT 이벤트 발송 스레드에서만 수행해야하며 장기 실행 프로세스는 "작업자"스레드에서 실행되어야하며, 업데이트는 SwingUtilities.invokeAndWait()
또는 SwingUtilities.invokeLater()
을 사용하여 이벤트 발송 스레드로 전송됩니다.작업자 스레드에서 Java Swing 사용자를 차단하기위한 패턴
장시간 진행되는 프로세스가 완료되는 동안 사용자가 응용 프로그램을 계속 사용하지 못하게하려면 어떻게합니까? 컨트롤을 회색으로 처리하고 위에서 언급 한 SwingUtilities
호출을 사용하여 작업자 스레드에서 다시 활성화 할 수 있습니까?
더 나은 대체 패턴이 있습니까?
사용자가 응용 프로그램을 사용하지 못하게하는 이유는 무엇입니까?가능하다면 그 일을 피하고 계속 지내고 싶을 것입니다. 그래도 모달 대화 상자는 어떻습니까? 컨트롤을 사용하지 않도록 설정할 수도 있습니다. – justkt
좋은 질문입니다. ProgressMonitor를 제외하고는 표준 답변을 모릅니다. – keuleJ
@justkt : 장기 실행 프로세스가 표시되는 것에 영향을주는 경우 사용자가 작업을 취소하는 것을 제외하고는 다른 작업을 수행하지 않을 수도 있습니다. 일반적으로 "취소"버튼을 제외하고는 버튼이 비활성화 된 모달 대화 상자가 있지만 좀 더 일반적인 패턴을 원합니다. – Ralph