자바 데스크톱 애플리케이션을 만들고 있습니다. "만들기"및 "취소"버튼이 두 개 있습니다. 내가 창을 만들면 보고서가 새 창에 만들어집니다. 내 문제는 "취소"버튼입니다. 사용자가 만들기 단추를 누르면 새 보고서를 만드는 데 약간의 시간이 걸립니다. 취소 버튼은 생성시에만 작동해야합니다. 사용자가 취소 버튼을 누르면 보고서 작성 작업이 중단되어야합니다. 버튼을 생성하고 취소하기 위해 액션 리스너를 추가하지만, 생성 버튼을 클릭하면 취소 버튼을 동시에 클릭 할 수 없습니다.자바 스윙에서 수행 된 작업을 중지하는 방법
3
A
답변
2
각 프로세스를 별도의 스레드로 실행 해보십시오. 취소가 작동하지 않는 이유는 생성이 프로세스를 완료하는 데 시간이 걸리기 때문입니다. 그 시간에 메인 스레드를 차지하고 다른 UI 요소가 취할 수있는 모든 작업 (취소 버튼 포함)을 중단합니다.
취소 버튼이 작동하는 것 같습니다. 그러나 클릭 할 때마다 시작 버튼 이벤트에 대한 처리를 위해 시작된 이벤트가 대기열의 후면에 놓입니다. 이벤트 처리를 별도의 스레드에 넣고 두 버튼에 필요한 리소스를 동기화하면 (스레드가 안전하면 해당 이벤트 버튼에 의해 생성 된 스레드를 취소 버튼을 사용하여 쉽게 중지 할 수 있어야합니다.
0
두 개의 다른 ActionListener
을 만드십시오. 하나는 "생성"JButton
이고 다른 하나는 "취소"JButton
입니다. 이렇게하면 상대방이 처리하는 동안 응답 할 수 있어야합니다.
관련 문제
- 1. 자바 스윙에서 하나의 버튼으로 여러 액션 수행
- 2. gSOAP 작업을 중지하는 방법
- 3. 파이썬 스레딩 작업을 중지하는 방법
- 4. 자바 스윙에서 화면 전환하기
- 5. 자바 스윙에서 JDirectoryChooser를 사용합니다.
- 6. 자바 스윙에서 간단한 캘린더를 만드는 방법
- 7. 자바 스윙에서 닫기 이벤트를 캡처하는 방법
- 8. 자바 스윙에서 문자열을 추가하는 방법 JTextPane?
- 9. 외부에서 소켓 읽기 작업을 중지하는 우아한 방법
- 10. 자바 스윙에서 버튼을 숨기기 Swing
- 11. 스윙에서 예외를 찾는 방법
- 12. GridLayout 자바 스윙에서 공간 줄이기
- 13. 자바 스윙에서 구성 요소를 스윙
- 14. 자바 스윙에서 이벤트는 어떻게 작동합니까?
- 15. 플래시 .swf 파일을 자바 스윙에서 실행
- 16. 스윙에서 패널을 호출하는 방법
- 17. 스윙에서 알림을 만드는 방법
- 18. 이 수행 된 방법
- 19. Java 스윙에서 끌기
- 20. 방법/CSS에서이 작업을 수행 할 수 있습니까?
- 21. 가치는 내가이 작업을 수행 할 수있는 방법,
- 22. "스틱"작업을 마스터에 수행
- 23. 스윙에서 잘못 정렬 된 단축키
- 24. webdev.webserver.exe를 중지하는 방법
- 25. 스윙에서 Smack API를 사용하여 복제 창의 열기를 중지하는 방법은 무엇입니까?
- 26. 석영 스케쥴러에서 작업을 일시 중지하는 방법은 무엇입니까?
- 27. 내 애플리케이션에서 생성 된 로그를 중지하는 방법
- 28. JFrame을 최소화하기 전에 몇 가지 작업을 수행 할 수 있습니까?
- 29. 자바 스크립트에서 플래시 개체 재생을 중지하는 방법
- 30. 내 자바 스크립트 카운트 다운을 중지하는 방법?
공식 Javadoc에 따르면 Swing *은 스레드로부터 안전하지 않으므로 * 좋은 방법은 아닙니다. – asteri
별도의 스레드에서 UPDATE하려는 스윙 요소에만 적용됩니다. 별도의 스레드에서 버튼 (또는 대부분의 스윙 UI 요소)을 업데이트하는 것이 안전하지 않을 수 있습니다. 그래서 당신은 옳았습니다. 스레드로부터 안전하지는 않습니다. 질문자는 버튼에 의해 시작되는 이벤트를 중지하기 만하면됩니다. – Perley