2017-08-11 6 views
0

親ダイアログから子ダイアログを削除したい子ダイアログをクリックしないでをクリックします。親ダイアログの作成ソースコードを編集しないでください。親ダイアログは再利用されており、1度しか作成されません。親ダイアログから子jdialog参照を削除する方法Java Swing

+0

JDialogを終了しますか? – clabe45

+0

はい。子ダイアログ親ダイアログは再利用され、一度だけ作成されます。 –

+0

コンテキストとは何ですか?もっとコードを投稿できますか? – clabe45

答えて

0

私は、これはあなたの答えであると思います:

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(); 
    } 
} 

ボタンShow me上で開いている親ダイアログと同様に、子ダイアログをクリックしたときに、私は2つのダイアログを作成しました。親ダイアログを閉じると、自動的に子ダイアログが閉じます。私はWindowListenerを使用して、親Dialogでアクションを実行します。親ダイアログを再度開くと、子ダイアログが開きません。

+0

ありがとうございました。私の場合、親ダイアログを編集することはできません。 –

関連する問題