diff options
Diffstat (limited to 'examples/org.eclipse.swt.snippets/src/org/eclipse/swt/snippets/Snippet337.java')
-rw-r--r-- | examples/org.eclipse.swt.snippets/src/org/eclipse/swt/snippets/Snippet337.java | 41 |
1 files changed, 34 insertions, 7 deletions
diff --git a/examples/org.eclipse.swt.snippets/src/org/eclipse/swt/snippets/Snippet337.java b/examples/org.eclipse.swt.snippets/src/org/eclipse/swt/snippets/Snippet337.java index 7941de36ba..357afaff54 100644 --- a/examples/org.eclipse.swt.snippets/src/org/eclipse/swt/snippets/Snippet337.java +++ b/examples/org.eclipse.swt.snippets/src/org/eclipse/swt/snippets/Snippet337.java @@ -21,6 +21,8 @@ package org.eclipse.swt.snippets; */ import java.awt.*; import java.awt.Canvas; +import java.awt.event.*; +import java.awt.event.WindowEvent; import javax.swing.*; @@ -32,12 +34,14 @@ import org.eclipse.swt.widgets.*; public class Snippet337 { -public static void main(String args[]) { - final Display display = new Display(); +static Display display; +public static void main(String args[]) { + display = new Display(); EventQueue.invokeLater(() -> { JFrame mainFrame = new JFrame("Main Window"); - mainFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); + mainFrame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); + mainFrame.addWindowListener(new Snippet337.CloseListener()); JPanel mainPanel = new JPanel(); mainPanel.setLayout(new FlowLayout()); JButton launchBrowserButton = new JButton("Launch Browser"); @@ -60,19 +64,42 @@ public static void main(String args[]) { mainPanel.add(new JTextField("a JTextField")); mainPanel.add(launchBrowserButton); - mainFrame.getContentPane().add(mainPanel, BorderLayout.CENTER); + mainFrame.getContentPane().add(mainPanel, java.awt.BorderLayout.CENTER); mainFrame.pack(); mainFrame.setVisible(true); }); display.addListener(SWT.Close, event -> EventQueue.invokeLater(() -> { Frame[] frames = Frame.getFrames(); - for (int i = 0; i < frames.length; i++) { - frames[i].dispose(); + for (Frame frame : frames) { + frame.dispose(); } })); while (!display.isDisposed()) { if (!display.readAndDispatch()) display.sleep(); } } - +private static class CloseListener implements WindowListener { + @Override + public void windowClosed(WindowEvent e) { + display.asyncExec(() -> display.dispose()); + } + @Override + public void windowOpened(WindowEvent e) { + } + @Override + public void windowClosing(WindowEvent e) { + } + @Override + public void windowIconified(WindowEvent e) { + } + @Override + public void windowDeiconified(WindowEvent e) { + } + @Override + public void windowActivated(WindowEvent e) { + } + @Override + public void windowDeactivated(WindowEvent e) { +} +} } |