I am showing JDialog in a JFrame. This JDialog does nothing. I would like to catch a close event and display a popup, but nothing happens.
I can not find the error. Could you tell me where the problem is?
Thanks a lot!
import java.awt.Dialog; import java.awt.FlowLayout; import java.awt.Window; import java.awt.event.WindowEvent; import java.awt.event.WindowListener; import javax.swing.JDialog; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JOptionPane; import javax.swing.JTextArea; @SuppressWarnings("serial") public class JFrameTest extends JFrame { public JFrameTest() { setLayout(new FlowLayout()); setSize(300, 300); add(new JTextArea("This is a text")); setDefaultCloseOperation(JFrameTest.EXIT_ON_CLOSE); getContentPane().setPreferredSize(getSize()); pack(); setLocationRelativeTo(null); setVisible(true); JDialogTest dialog = new JDialogTest(this, Dialog.ModalityType.APPLICATION_MODAL); dialog.setVisible(true); } public static void main(String[] args) { new JFrameTest(); } private class JDialogTest extends JDialog implements WindowListener { public JDialogTest(Window parent, ModalityType modalityType) { super(parent, modalityType); setLayout(new FlowLayout()); add(new JLabel("This is another text")); setSize(200, 50); setDefaultCloseOperation(JDialogTest.DO_NOTHING_ON_CLOSE); setLocationRelativeTo(null); getContentPane().setPreferredSize(getSize()); pack(); setVisible(true); } @Override public void windowActivated(WindowEvent e) {} @Override public void windowClosed(WindowEvent e) {} @Override public void windowClosing(WindowEvent e) { JOptionPane.showMessageDialog(this, "A popup message!"); } @Override public void windowDeactivated(WindowEvent e) {} @Override public void windowDeiconified(WindowEvent e) {} @Override public void windowIconified(WindowEvent e) {} @Override public void windowOpened(WindowEvent e) {} } }
source share