2017-12-25 45 views
0

여기 buttonGroup이 활성화되어 있지 않은 경우 오류 메시지가 포함 된 DialogFrame을 열려고합니다. & 검색 버튼을 클릭합니다. 그래서 ActionEvent 내에서 DialogFramesetVisible(true)으로 만들었습니다. 그러나 버튼 그룹이 활성 상태 일 때 & 검색 버튼 (if 내부)을 클릭하면 이 작동하지 않는 것 같습니다. 즉, DialogFrame 여전히 팝업됩니다!jDialog (조건이있는 경우)가 보이도록 설정된 경우 (루프 외부) jDialog를 숨기도록 표시하려면 어떻게 설정해야합니까?

의 상태를 if 상태로 바꾸려면 어떻게해야합니까?

private void jButtonSearchActionPerformed(java.awt.event.ActionEvent evt) {            

    SrchEMsg sem = new SrchEMsg(this); 
    sem.setVisible(true); 
    sem.setLocationRelativeTo(null); 
    sem.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE); 


    if (bgGroup.getSelection() != null) { 
     sem.setVisible(false); //doesn't work. 
     SrchResult sr = new SrchResult(); 
     sr.setVisible(true); 
     sr.pack(); 
     sr.setLocationRelativeTo(null); 
     sr.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     this.dispose(); 
    } 
}            
+0

JDialog 모달입니까? 그렇다면 코드 흐름이 가시화 된 후에 코드 흐름을 차단합니다. –

+0

그리고 왜 기본 설정을 볼 수 있습니까? 왜 안되나요? sem.setVisible (bgGroup.getSelection() == null); ' –

+1

1) 더 나은 도움을 더 빨리 얻으려면 [MCVE] 또는 [짧은, 자체 포함, 올바른 예] (http : //www.sscce. org /). 2) 질문에 관련 태그를 사용하십시오. 'JDialog' 태그는 관련이 있습니다. IDE의 태그는 그렇지 않습니다. –

답변

0

나는 가시성을 조작하지 단순히 몇 가지 조건이 충족 경우 모든 에서 sem을 생성하지 않는 것이 좋습니다 것입니다 :

if (bgGroup.getSelection() == null) { 
    // only handle `sem` 
    SrchEMsg sem = new SrchEMsg(this); 
    sem.setVisible(true); 
    sem.setLocationRelativeTo(null); 
    sem.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE); 
} else { 
    // only handle `sr` 
    SrchResult sr = new SrchResult(); 
    sr.setVisible(true); 
    sr.pack(); 
    sr.setLocationRelativeTo(null); 
    sr.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    this.dispose(); 
} 
0

은 간단하게.

sem.setVisible(true); 

제거하고

sem.setVisible(bgGroup.getSelection() == null); 

만이 볼 수 사용자가 항목을 선택할 때 대신 당신의 소원이 보이지 않는 대화를 설정하는 경우

을 필요하다면 설정 대신 간단하게 수행하기, 대화 작성 코드에서는이 작업을 수행 할 수 없으며 JRadioButton에 추가 된 ActionListener 또는 ItemListener와 같은 적절한 이벤트에 응답해야합니다.