2010-01-19 2 views
1

JDialog 클래스에는 JDialog를 열 때 사용되는 메인 윈도우 (JFrame)의 버튼이 두 번 이상 표시 될 수 없도록하는 JDialog 클래스가 있습니다. 몇 번 누르면? 미리 많은 감사드립니다!Java에서 대화의 중복 방지하기 스윙

답변

2

네, 상자를 모달로 만들 필요가 없습니다 (모달을 만드는 것이 가장 쉬운 방법 일 수 있습니다). 당신의 코드에서

private final MyDialog dialog = new MyDialog(); 

:

는 단순히 회원 delcarations에서 다음

뭔가를 할

private void showDialog() { 
    dialog.setVisible(true); 
    dialog.requestFocus(); // May be needed to bring window to front 
} 

는 한 번만 상자를 인스턴스화 것을 보장합니다. 버튼을 누를 때마다 showDialog()를 호출하기 만하면됩니다.

+0

피트 (Pete)의 예제 코드는 항상 더 나은 답변을 제공합니다. –

0

모달을 JDialog으로 만들면 부모 창은 닫힐 때까지 반응하지 않습니다.

또는 전에 JDialog을 초기화하고 버튼을 누르면 표시되도록 설정할 수 있습니다. 두 번 표시하면 두 번 표시되지 않습니다.

1

내가 스윙을 사용하여 과거에했던 또 다른 방법은 버튼을 눌렀을 때 버튼을 사용하지 않으면 버튼을 비활성화하는 것입니다. 그런 다음 관찰 가능한 패턴을 사용하여 자식 윈도우를보고 자식 윈도우가 닫힐 때 버튼을 다시 활성화합니다. 그렇게하면 사용자가 여러 번 클릭하여 물건을 엉망으로 만들 수없는 이유 때문에 자식 창을 표시하는 데 시간이 걸리는 경우

관련 문제