2017-12-25 8 views
0

Hier möchte ich eine DialogFrame öffnen, die eine Fehlermeldung enthält, wenn eine buttonGroup nicht aktiv ist & der Suchknopf angeklickt wird. Also innerhalb des ActionEvent habe ich die DialogFrame zu setVisible(true) gemacht. Aber wenn die Tastengruppe aktiv ist & Ich klicke auf die Suche-Taste (innerhalb der if Zustand), die setVisible(false) scheint nicht zu funktionieren, mit anderen Worten die DialogFrame noch pop-ups! Wie kann ich die Sichtbarkeit des DialogFrame innerhalb des if Zustandes deaktivieren?Wie kann ich sichtbar setzen, um den sichtbaren jDialog (innerhalb if-Bedingung) zu verbergen (außerhalb if-Schleife)?

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

Ist der JDialog Modal? Wenn ja, wird der Codefluss blockiert, nachdem er sichtbar gesetzt wurde. –

+0

Und warum sind Sie standardmäßig so eingestellt, dass es sichtbar ist? Warum nicht? Sem.setVisible (bgGroup.getSelection() == null); ' –

+1

1) Um eine bessere Hilfe zu erhalten, sollten Sie ein [MCVE] oder [Short, Self Contained, Correct Example] (http: // www.sscce. org /). 2) Verwenden Sie relevante Tags für Fragen. Das 'JDialog'-Tag ist relevant, das Tag für Ihre IDE nicht. –

Antwort

0

würde ich empfehlen, nicht die Sichtbarkeit zu manipulieren, sondern einfach nicht sem an allen zu erstellen, wenn bestimmte Bedingung erfüllt ist:

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

Keep it simple. Befreien Sie sich von

sem.setVisible(true); 

und stattdessen tun einfach

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

nur sichtbar gesetzt, wenn nötig

werden, wenn stattdessen Ihr Wunsch, den Dialog unsichtbar zu setzen, wenn der Benutzer eine Auswahl trifft, Dann können Sie dies nicht im Dialogerstellungscode tun, sondern müssen auf das entsprechende Ereignis reagieren, z. B. einen ActionListener oder einen ItemListener, der zu Ihren JRadioButtons hinzugefügt wurde.

Verwandte Themen