2017-08-11 6 views
0

Ich möchte das untergeordnete Dialogfeld aus dem übergeordneten Dialogfeld entfernen Ohne auf den untergeordneten Dialog klicken. Und ohne den Elterndialog-Erstellungsquellcode zu bearbeiten. Der übergeordnete Dialog wird wiederverwendet und nur einmal erstellt.So entfernen Sie untergeordnete jdialog-Referenz aus dem übergeordneten Dialogfeld Java Swing

+0

Sie möchten also den JDialog schließen? – clabe45

+0

ja. der untergeordnete Dialog Der übergeordnete Dialog wird wiederverwendet und erstellt nur einmal. –

+0

Was ist der Kontext? Kannst du mehr Code posten? – clabe45

Antwort

0

Ich hoffe, dies ist Ihre Antwort:

package stack; 

import java.awt.event.ActionEvent; 
import java.awt.event.ActionListener; 
import java.awt.event.WindowEvent; 
import java.awt.event.WindowListener; 

import javax.swing.JButton; 
import javax.swing.JDialog; 
import javax.swing.JFrame; 
import javax.swing.JLabel; 

public class DialogShower implements WindowListener { 

    JFrame frame; 
    JButton showButton; 
    ParentDialog parentDialog; 
    boolean fristTimeOpen = true; 

    public DialogShower() { 
    frame = new JFrame(); 
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 

    parentDialog = new ParentDialog(); 
    parentDialog.addWindowListener(this); 

    showButton = new JButton("Show me"); 
    showButton.addActionListener(new ActionListener() { 

     @Override 
     public void actionPerformed(ActionEvent e) { 
     if (fristTimeOpen) { 
      parentDialog.childDialog.setVisible(true); 
     } 
     parentDialog.setVisible(true); 
     } 
    }); 

    frame.getContentPane().add(showButton); 
    frame.setSize(100, 100); 
    frame.setVisible(true); 
    } 

    public class ParentDialog extends JDialog { 

    ChildDialog childDialog; 

    public ParentDialog() { 
     super(frame, "ParentDialog", true); 
     childDialog = new ChildDialog(); 
    } 

    public class ChildDialog extends JDialog { 

     JLabel label; 

     public ChildDialog() { 
     super(ParentDialog.this, "childDailg", false); 
     label = new JLabel("Notification : Dialog"); 
     getContentPane().add(label); 
     setLocation(300, 300); 
     } 
    } 
    } 

    @Override 
    public void windowActivated(WindowEvent e) { 
    } 

    @Override 
    public void windowClosed(WindowEvent e) { 
    System.out.println("2"); 
    } 

    @Override 
    public void windowClosing(WindowEvent e) { 
    fristTimeOpen = false; 
    parentDialog.childDialog.dispose(); 
    } 

    @Override 
    public void windowDeactivated(WindowEvent e) { 
    } 

    @Override 
    public void windowDeiconified(WindowEvent e) { 
    } 

    @Override 
    public void windowIconified(WindowEvent e) { 
    } 

    @Override 
    public void windowOpened(WindowEvent e) { 
    } 

    public static void main(String[] args) { 
    new DialogShower(); 
    } 
} 

Ich habe zwei Dialog, wenn Sie auf die Schaltfläche klicken Show me offen Eltern Dialog sowie Kinder Dialog. Wenn Sie das übergeordnete Dialogfeld schließen, wird das untergeordnete Dialogfeld automatisch geschlossen. Ich verwende WindowListener, um eine Aktion für das übergeordnete Dialogfeld close auszuführen. Wenn Sie das übergeordnete Dialogfeld erneut öffnen, wird das untergeordnete Dialogfeld nicht geöffnet.

+0

Vielen Dank für Ihre Hilfe. aber in meinem Fall kann ich den Elterndialog nicht bearbeiten. –

Verwandte Themen