문제

이미 화면에있는 대화 상자가 표시되는 것을 어떻게 피할 수 있습니까?

세부 사항 : 내 응용 프로그램에서 많은 타이머가 실행 중입니다. 치명적인 오류가 발생하면 영향을받는 모든 스레드는 JDialog (swingx.jxerrorpane.showdialog ())을 표시합니다. 모든 실행 타이머를 취소하더라도 여전히 일부 대화 상자가 동시에 나타납니다. 하나의 대화만으로 나타나는 방법을 어떻게 달성 할 수 있습니까?

나는 showdialog ()을 동기화하는 방법을 만들려고 노력하여 전체 GUI가 차단된다. 깃발 사용도 작동하지 않았습니다.

도움이 되었습니까?

해결책

대화 상자를 관찰자로 바꾸고이 새로운 관찰자에게 오류 이벤트를 게시합니다 ( 관찰자 디자인 패턴). 이벤트가 발생하면 대화 상자가 자체적으로 표시되어야합니다 (메인 프레임은 부모로서). 대화 상자의 테이블에 최근 오류가 표시됩니다. 해당 테이블의 맨 아래에 새로운 오류를 추가하십시오.

또 다른 옵션은 메인 프레임의 테이블에 오류를 표시하는 것입니다. 사용자가 최소화 할 수 있도록 jsplitpane에 테이블을 넣으십시오.

다른 팁

또 다른 옵션은 대화를 싱글 톤으로 바꾸는 것입니다.

  • 대화 상자에 개인 생성자를 제공하십시오.
  • "개인 정적 MyDialog 인스턴스"를 만듭니다. - 대화 상자 클래스의 속성.
  • "public static myDialog getInstance () {...}; - 인스턴스를 반환하고 널 인 경우 먼저 인스턴스화하는 메소드를 만듭니다.

여기서 myDialog는 대화 창의 클래스의 이름이어야합니다.

그런 다음 대화 상자를 표시 할 때마다 단순히 싱글 톤을 참조하십시오.

myDialog.getInstance (). showdialog ();

ShowDialog가 단지 대화 창을 보이게 만듭니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top