2017-12-25 7 views
0

buttonGroupがアクティブでないときにエラーメッセージを含むDialogFrameを開きたい場合は、&検索ボタンをクリックします。したがって、私はActionEventの中でDialogFramesetVisible(true)にしました。しかし、ボタングループがアクティブなとき&私は検索ボタン(ifの条件の中で)をクリックすると、は動作しないように見えます。つまり、DialogFrameはまだポップアップです!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(bgGroup.getSelection() == null); 

にのみ表示に設定します

sem.setVisible(true); 

、代わりに取り除きますダイアログ作成コードでこれを行うことはできませんが、JRadioButtonに追加されたActionListenerやItemListenerなどの適切なイベントに応答する必要があります。

関連する問題