Java/Swing JFC/Various Event Listener
Содержание
- 1 Demonstrating the ActionListener
- 2 Demonstrating the AdjustmentListener
- 3 Demonstrating the AncestorListener
- 4 Demonstrating the ComponentListener
- 5 Demonstrating the ContainerListener
- 6 Demonstrating the FocusListener
- 7 Demonstrating the HyperlinkListener
- 8 Demonstrating the InternalFrameListener
- 9 Demonstrating the ItemListener
- 10 Demonstrating the KeyListener
- 11 Demonstrating the MenuListener
- 12 Demonstrating the MouseListener and MouseMotionListener
- 13 Demonstrating the MouseWheelListener
- 14 Demonstrating the PopupMenuListener
- 15 Demonstrating the WindowListener
- 16 Demonstrating the WindowListener with a WindowAdapter
- 17 Responding to Keystrokes
Demonstrating the ActionListener
<source lang="java">
import java.awt.BorderLayout; import java.awt.Container; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.KeyEvent; import javax.swing.JButton; import javax.swing.JComboBox; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JTextField; public class ActionTest {
public static void main(String args[]) { JFrame frame = new JFrame(); Container contentPane = frame.getContentPane(); ActionListener listener = new ActionListener() { public void actionPerformed(ActionEvent e) { System.out.println("Command: " + e.getActionCommand()); System.out.println("Modifiers: "); int modifiers = e.getModifiers(); System.out.println("\tALT : " + checkMod(modifiers, ActionEvent.ALT_MASK)); System.out.println("\tCTRL : " + checkMod(modifiers, ActionEvent.CTRL_MASK)); System.out.println("\tMETA : " + checkMod(modifiers, ActionEvent.META_MASK)); System.out.println("\tSHIFT: " + checkMod(modifiers, ActionEvent.SHIFT_MASK)); Object source = e.getSource(); if (source instanceof JComboBox) { JComboBox jb = (JComboBox) source; System.out.println("Combo: " + jb.getSelectedItem()); } } private boolean checkMod(int modifiers, int mask) { return ((modifiers & mask) == mask); } }; String flavors[] = { "Item 1", "Item 2", "Item 3"}; JComboBox jc = new JComboBox(flavors); jc.setMaximumRowCount(4); jc.setEditable(true); jc.addActionListener(listener); contentPane.add(jc, BorderLayout.NORTH); JButton b = new JButton("Button!"); b.addActionListener(listener); contentPane.add(b, BorderLayout.CENTER); JPanel panel = new JPanel(); JLabel label = new JLabel("Label 1: "); JTextField text = new JTextField("Type your text", 15); text.addActionListener(listener); label.setDisplayedMnemonic(KeyEvent.VK_1); label.setLabelFor(text); panel.add(label); panel.add(text); contentPane.add(panel, BorderLayout.SOUTH); frame.pack(); frame.show(); }
}
</source>
Demonstrating the AdjustmentListener
<source lang="java">
import java.awt.BorderLayout; import java.awt.Container; import java.awt.event.AdjustmentEvent; import java.awt.event.AdjustmentListener; import javax.swing.Icon; import javax.swing.ImageIcon; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JScrollBar; import javax.swing.JScrollPane; public class AdjustmentTest {
public static void main(String args[]) { JFrame frame = new JFrame(); Container contentPane = frame.getContentPane(); Icon icon = new ImageIcon("jexp.gif"); JButton b = new JButton(icon); JScrollPane pane = new JScrollPane(b); AdjustmentListener hListener = new AdjustmentListener() { public void adjustmentValueChanged(AdjustmentEvent e) { System.out.println("Horizontal: "); dumpInfo(e); } }; JScrollBar hBar = pane.getHorizontalScrollBar(); hBar.addAdjustmentListener(hListener); AdjustmentListener vListener = new AdjustmentListener() { public void adjustmentValueChanged(AdjustmentEvent e) { System.out.println("Vertical: "); dumpInfo(e); } }; JScrollBar vBar = pane.getVerticalScrollBar(); vBar.addAdjustmentListener(vListener); contentPane.add(pane, BorderLayout.CENTER); frame.setSize(300, 200); frame.show(); } private static void dumpInfo(AdjustmentEvent e) { System.out.println("\tValue: " + e.getValue()); String type = null; switch (e.getAdjustmentType()) { case AdjustmentEvent.TRACK: type = "Track"; break; case AdjustmentEvent.BLOCK_DECREMENT: type = "Block Decrement"; break; case AdjustmentEvent.BLOCK_INCREMENT: type = "Block Increment"; break; case AdjustmentEvent.UNIT_DECREMENT: type = "Unit Decrement"; break; case AdjustmentEvent.UNIT_INCREMENT: type = "Unit Increment"; break; } System.out.println("\tType: " + type); }
}
</source>
Demonstrating the AncestorListener
<source lang="java">
import java.awt.BorderLayout; import java.awt.Container; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.Timer; import java.util.TimerTask; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.event.AncestorEvent; import javax.swing.event.AncestorListener; public class AncestorTest {
public static void main(String args[]) { final JFrame frame = new JFrame(); Container contentPane = frame.getContentPane(); JButton b = new JButton("Hide for 5"); ActionListener action = new ActionListener() { public void actionPerformed(ActionEvent actionEvent) { frame.setVisible(false); TimerTask task = new TimerTask() { public void run() { frame.setVisible(true); } }; Timer timer = new Timer(); timer.schedule(task, 5000); } }; b.addActionListener(action); AncestorListener ancestor = new AncestorListener() { public void ancestorAdded(AncestorEvent e) { System.out.println("Added"); dumpInfo(e); } public void ancestorMoved(AncestorEvent e) { System.out.println("Moved"); dumpInfo(e); } public void ancestorRemoved(AncestorEvent e) { System.out.println("Removed"); dumpInfo(e); } private void dumpInfo(AncestorEvent e) { System.out.println("\tAncestor: " + name(e.getAncestor())); System.out.println("\tAncestorParent: " + name(e.getAncestorParent())); System.out.println("\tComponent: " + name(e.getComponent())); } private String name(Container c) { return (c == null) ? null : c.getName(); } }; b.addAncestorListener(ancestor); contentPane.add(b, BorderLayout.NORTH); frame.setSize(300, 200); frame.show(); }
}
</source>
Demonstrating the ComponentListener
<source lang="java">
import java.awt.BorderLayout; import java.awt.Container; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.ruponentEvent; import java.awt.event.ruponentListener; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JSplitPane; public class SwingComponentTest {
public static void main(String args[]) { JFrame frame = new JFrame(); Container contentPane = frame.getContentPane(); ComponentListener comp = new ComponentListener() { public void componentHidden(ComponentEvent e) { dump("Hidden", e); } public void componentMoved(ComponentEvent e) { dump("Moved", e); } public void componentResized(ComponentEvent e) { dump("Resized", e); } public void componentShown(ComponentEvent e) { dump("Shown", e); } private void dump(String type, ComponentEvent e) { System.out.println(e.getComponent().getName() + " : " + type); } }; JButton left = new JButton("Left"); left.setName("Left"); left.addComponentListener(comp); final JButton right = new JButton("Right"); right.setName("Right"); right.addComponentListener(comp); ActionListener action = new ActionListener() { public void actionPerformed(ActionEvent e) { right.setVisible(!right.isVisible()); } }; left.addActionListener(action); JSplitPane pane = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, true, left, right); contentPane.add(pane, BorderLayout.CENTER); frame.setSize(300, 200); frame.show(); }
}
</source>
Demonstrating the ContainerListener
<source lang="java">
import java.awt.ruponent; import java.awt.Container; import java.awt.GridLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.ContainerEvent; import java.awt.event.ContainerListener; import javax.swing.JButton; import javax.swing.JFrame; public class ContainerTest {
public static void main(String args[]) { JFrame frame = new JFrame(); Container contentPane = frame.getContentPane(); ContainerListener cont = new ContainerListener() { ActionListener listener = new ActionListener() { public void actionPerformed(ActionEvent e) { System.out.println("Selected: " + e.getActionCommand()); } }; public void componentAdded(ContainerEvent e) { Component c = e.getChild(); if (c instanceof JButton) { JButton b = (JButton) c; b.addActionListener(listener); } } public void componentRemoved(ContainerEvent e) { Component c = e.getChild(); if (c instanceof JButton) { JButton b = (JButton) c; b.removeActionListener(listener); } } }; contentPane.addContainerListener(cont); contentPane.setLayout(new GridLayout(3, 2)); contentPane.add(new JButton("First")); contentPane.add(new JButton("Second")); contentPane.add(new JButton("Third")); contentPane.add(new JButton("Fourth")); contentPane.add(new JButton("Fifth")); frame.setSize(300, 200); frame.show(); }
}
</source>
Demonstrating the FocusListener
<source lang="java">
import java.awt.BorderLayout; import java.awt.ruponent; import java.awt.Container; import java.awt.event.FocusEvent; import java.awt.event.FocusListener; import java.awt.event.KeyEvent; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JTextField; public class FocusTest {
public static void main(String args[]) { JFrame frame = new JFrame(); Container contentPane = frame.getContentPane(); FocusListener listener = new FocusListener() { public void focusGained(FocusEvent e) { dumpInfo(e); } public void focusLost(FocusEvent e) { dumpInfo(e); } private void dumpInfo(FocusEvent e) { System.out.println("Source : " + name(e.getComponent())); System.out.println("Opposite : " + name(e.getOppositeComponent())); System.out.println("Temporary: " + e.isTemporary()); } private String name(Component c) { return (c == null) ? null : c.getName(); } }; // First JPanel panel = new JPanel(); JLabel label = new JLabel("Label 1: "); JTextField text = new JTextField("Type your text", 15); text.setName("First"); text.addFocusListener(listener); label.setDisplayedMnemonic(KeyEvent.VK_1); label.setLabelFor(text); panel.add(label); panel.add(text); contentPane.add(panel, BorderLayout.NORTH); // Second panel = new JPanel(); label = new JLabel("Label 2: "); text = new JTextField("14.0", 10); text.setName("Second"); text.addFocusListener(listener); text.setHorizontalAlignment(JTextField.RIGHT); label.setDisplayedMnemonic(KeyEvent.VK_2); label.setLabelFor(text); panel.add(label); panel.add(text); contentPane.add(panel, BorderLayout.SOUTH); frame.pack(); frame.show(); }
}
</source>
Demonstrating the HyperlinkListener
<source lang="java">
import java.awt.BorderLayout; import java.awt.Container; import java.io.IOException; import javax.swing.JEditorPane; import javax.swing.JFrame; import javax.swing.JScrollPane; import javax.swing.event.HyperlinkEvent; import javax.swing.event.HyperlinkListener; public class HyperlinkTest {
public static void main(String args[]) { JFrame frame = new JFrame(); Container contentPane = frame.getContentPane(); final JEditorPane ep = new JEditorPane(); try { ep.setPage("http://www.jexp.ru"); } catch (IOException e) { System.err.println("Bad URL: " + e); System.exit(-1); } HyperlinkListener listener = new HyperlinkListener() { public void hyperlinkUpdate(HyperlinkEvent e) { if (e.getEventType() == HyperlinkEvent.EventType.ACTIVATED) { try { ep.setPage(e.getURL()); } catch (IOException ioe) { System.err.println("Error loading: " + ioe); } } } }; ep.addHyperlinkListener(listener); ep.setEditable(false); JScrollPane pane = new JScrollPane(ep); contentPane.add(pane, BorderLayout.CENTER); frame.setSize(640, 480); frame.show(); }
}
</source>
Demonstrating the InternalFrameListener
<source lang="java">
import java.awt.BorderLayout; import java.awt.Container; import javax.swing.JDesktopPane; import javax.swing.JFrame; import javax.swing.JInternalFrame; import javax.swing.JLabel; import javax.swing.JLayeredPane; import javax.swing.event.InternalFrameEvent; import javax.swing.event.InternalFrameListener; public class InternalFrameTest {
public static void main(String args[]) { JFrame frame = new JFrame("Internal Frame Listener"); Container contentPane = frame.getContentPane(); JLayeredPane desktop = new JDesktopPane(); desktop.setOpaque(false); desktop.add(createLayer("One"), JLayeredPane.POPUP_LAYER); desktop.add(createLayer("Two"), JLayeredPane.DEFAULT_LAYER); desktop.add(createLayer("Three"), JLayeredPane.PALETTE_LAYER); contentPane.add(desktop, BorderLayout.CENTER); frame.setSize(300, 300); frame.show(); } static JInternalFrame createLayer(String label) { return new SelfInternalFrame(label); } static class SelfInternalFrame extends JInternalFrame { InternalFrameListener listener = new InternalFrameListener() { public void internalFrameActivated(InternalFrameEvent e) { dumpInfo("Activated", e); } public void internalFrameClosed(InternalFrameEvent e) { dumpInfo("Closed", e); } public void internalFrameClosing(InternalFrameEvent e) { dumpInfo("Closing", e); } public void internalFrameDeactivated(InternalFrameEvent e) { dumpInfo("Deactivated", e); } public void internalFrameDeiconified(InternalFrameEvent e) { dumpInfo("Deiconified", e); } public void internalFrameIconified(InternalFrameEvent e) { dumpInfo("Iconified", e); } public void internalFrameOpened(InternalFrameEvent e) { dumpInfo("Opened", e); } private void dumpInfo(String s, InternalFrameEvent e) { System.out.println("Source: " + e.getInternalFrame().getName() + " : " + s); } }; public SelfInternalFrame(String s) { getContentPane().add(new JLabel(s, JLabel.CENTER), BorderLayout.CENTER); setName(s); addInternalFrameListener(listener); setBounds(50, 50, 100, 100); setResizable(true); setClosable(true); setMaximizable(true); setIconifiable(true); setTitle(s); setVisible(true); } }
}
</source>
Demonstrating the ItemListener
<source lang="java">
import java.awt.BorderLayout; import java.awt.Container; import java.awt.GridLayout; import java.awt.event.ItemEvent; import java.awt.event.ItemListener; import javax.swing.ButtonGroup; import javax.swing.JComboBox; import javax.swing.JComponent; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.JRadioButton; public class ItemTest {
public static void main(String args[]) { JFrame frame = new JFrame(); Container contentPane = frame.getContentPane(); ItemListener listener = new ItemListener() { public void itemStateChanged(ItemEvent e) { System.out.println("Source: " + name(e.getSource())); System.out.println("Item: " + name(e.getItem())); int state = e.getStateChange(); System.out.println("State: " + ((state == ItemEvent.SELECTED) ? "Selected" : "Deselected")); } private String name(Object o) { if (o instanceof JComponent) { JComponent comp = (JComponent) o; return comp.getName(); } else { return o.toString(); } } }; JPanel panel = new JPanel(new GridLayout(0, 1)); ButtonGroup group = new ButtonGroup(); JRadioButton option = new JRadioButton("French Fries", true); option.setName(option.getText()); option.addItemListener(listener); group.add(option); panel.add(option); option = new JRadioButton("Onion Rings", false); option.setName(option.getText()); option.addItemListener(listener); group.add(option); panel.add(option); option = new JRadioButton("Ice Cream", false); option.setName(option.getText()); option.addItemListener(listener); group.add(option); panel.add(option); contentPane.add(panel, BorderLayout.NORTH); String flavors[] = { "Item 1", "Item 2", "Item 3"}; JComboBox jc = new JComboBox(flavors); jc.setName("Combo"); jc.addItemListener(listener); jc.setMaximumRowCount(4); contentPane.add(jc, BorderLayout.SOUTH); frame.pack(); frame.show(); }
}
</source>
Demonstrating the KeyListener
<source lang="java">
import java.awt.BorderLayout; import java.awt.Container; import java.awt.event.KeyEvent; import java.awt.event.KeyListener; import javax.swing.JFrame; import javax.swing.JTextField; public class KeyTest {
public static void main(String args[]) { JFrame frame = new JFrame("Key Listener"); Container contentPane = frame.getContentPane(); KeyListener listener = new KeyListener() { public void keyPressed(KeyEvent e) { dumpInfo("Pressed", e); } public void keyReleased(KeyEvent e) { dumpInfo("Released", e); } public void keyTyped(KeyEvent e) { dumpInfo("Typed", e); } private void dumpInfo(String s, KeyEvent e) { System.out.println(s); int code = e.getKeyCode(); System.out.println("\tCode: " + KeyEvent.getKeyText(code)); System.out.println("\tChar: " + e.getKeyChar()); int mods = e.getModifiersEx(); System.out.println("\tMods: " + KeyEvent.getModifiersExText(mods)); System.out.println("\tLocation: " + location(e.getKeyLocation())); System.out.println("\tAction? " + e.isActionKey()); } private String location(int location) { switch (location) { case KeyEvent.KEY_LOCATION_LEFT: return "Left"; case KeyEvent.KEY_LOCATION_RIGHT: return "Right"; case KeyEvent.KEY_LOCATION_NUMPAD: return "NumPad"; case KeyEvent.KEY_LOCATION_STANDARD: return "Standard"; case KeyEvent.KEY_LOCATION_UNKNOWN: default: return "Unknown"; } } }; JTextField text = new JTextField(); text.addKeyListener(listener); contentPane.add(text, BorderLayout.NORTH); frame.pack(); frame.show(); }
}
</source>
Demonstrating the MenuListener
<source lang="java">
import javax.swing.ButtonGroup; import javax.swing.JCheckBoxMenuItem; import javax.swing.JFrame; import javax.swing.JMenu; import javax.swing.JMenuBar; import javax.swing.JMenuItem; import javax.swing.JRadioButtonMenuItem; import javax.swing.event.MenuEvent; import javax.swing.event.MenuListener; public class MenuTest extends JFrame {
public MenuTest() { super(); MenuListener listener = new MenuListener() { public void menuCanceled(MenuEvent e) { dumpInfo("Canceled", e); } public void menuDeselected(MenuEvent e) { dumpInfo("Deselected", e); } public void menuSelected(MenuEvent e) { dumpInfo("Selected", e); } private void dumpInfo(String s, MenuEvent e) { JMenu menu = (JMenu) e.getSource(); System.out.println(s + ": " + menu.getText()); } }; JMenu fileMenu = new JMenu("File"); fileMenu.addMenuListener(listener); fileMenu.add(new JMenuItem("Open")); fileMenu.add(new JMenuItem("Close")); fileMenu.add(new JMenuItem("Exit")); JMenu helpMenu = new JMenu("Help"); helpMenu.addMenuListener(listener); helpMenu.add(new JMenuItem("About MenuTest")); helpMenu.add(new JMenuItem("Class Hierarchy")); helpMenu.addSeparator(); helpMenu.add(new JCheckBoxMenuItem("Balloon Help")); JMenu subMenu = new JMenu("Categories"); subMenu.addMenuListener(listener); JRadioButtonMenuItem rb; ButtonGroup group = new ButtonGroup(); subMenu.add(rb = new JRadioButtonMenuItem("A Little Help", true)); group.add(rb); subMenu.add(rb = new JRadioButtonMenuItem("A Lot of Help")); group.add(rb); helpMenu.add(subMenu); JMenuBar mb = new JMenuBar(); mb.add(fileMenu); mb.add(helpMenu); setJMenuBar(mb); } public static void main(String args[]) { JFrame frame = new MenuTest(); frame.setSize(300, 300); frame.show(); }
}
</source>
Demonstrating the MouseListener and MouseMotionListener
<source lang="java">
import java.awt.Color; import java.awt.Graphics; import java.awt.event.MouseEvent; import java.awt.event.MouseListener; import java.awt.event.MouseMotionListener; import javax.swing.JFrame; import javax.swing.JMenuItem; import javax.swing.JPopupMenu; public class MouseTest extends JFrame {
int startX, startY, endX, endY; Color color = Color.BLACK; public MouseTest() { super(); final JPopupMenu pop = new JPopupMenu(); pop.add(new JMenuItem("Cut")); pop.add(new JMenuItem("Copy")); pop.add(new JMenuItem("Paste")); pop.addSeparator(); pop.add(new JMenuItem("Select All")); pop.setInvoker(this); MouseListener popup = new MouseListener() { public void mouseClicked(MouseEvent e) { } public void mouseEntered(MouseEvent e) { } public void mouseExited(MouseEvent e) { } public void mousePressed(MouseEvent e) { if (e.isPopupTrigger()) { showPopup(e); } } public void mouseReleased(MouseEvent e) { if (e.isPopupTrigger()) { showPopup(e); } } private void showPopup(MouseEvent e) { pop.show(e.getComponent(), e.getX(), e.getY()); } }; addMouseListener(popup); MouseListener drawing1 = new MouseListener() { public void mouseClicked(MouseEvent e) { } public void mouseEntered(MouseEvent e) { } public void mouseExited(MouseEvent e) { } public void mousePressed(MouseEvent e) { color = Color.RED; startX = endX = e.getX(); startY = endY = e.getY(); repaint(); } public void mouseReleased(MouseEvent e) { color = Color.BLACK; repaint(); } }; addMouseListener(drawing1); MouseMotionListener drawing2 = new MouseMotionListener() { public void mouseDragged(MouseEvent e) { endX = e.getX(); endY = e.getY(); repaint(); } public void mouseMoved(MouseEvent e) { } }; addMouseMotionListener(drawing2); } public void paint(Graphics g) { super.paint(g); g.setColor(color); g.drawLine(startX, startY, endX, endY); } public static void main(String args[]) { JFrame frame = new MouseTest(); frame.setSize(300, 300); frame.show(); }
}
</source>
Demonstrating the MouseWheelListener
<source lang="java">
import java.awt.Color; import java.awt.Container; import java.awt.event.MouseWheelEvent; import java.awt.event.MouseWheelListener; import javax.swing.JFrame; public class MouseWheelTest extends JFrame {
private static final Color colors[] = { Color.BLACK, Color.BLUE, Color.CYAN, Color.DARK_GRAY, Color.GRAY, Color.GREEN, Color.LIGHT_GRAY, Color.MAGENTA, Color.ORANGE, Color.PINK, Color.RED, Color.WHITE, Color.YELLOW }; public MouseWheelTest() { super(); final Container contentPane = getContentPane(); MouseWheelListener listener = new MouseWheelListener() { int colorCounter; private static final int UP = 1; private static final int DOWN = 2; public void mouseWheelMoved(MouseWheelEvent e) { int count = e.getWheelRotation(); int direction = (Math.abs(count) > 0) ? UP : DOWN; changeBackground(direction); } private void changeBackground(int direction) { contentPane.setBackground(colors[colorCounter]); if (direction == UP) { colorCounter++; } else { --colorCounter; } if (colorCounter == colors.length) { colorCounter = 0; } else if (colorCounter < 0) { colorCounter = colors.length - 1; } } }; contentPane.addMouseWheelListener(listener); } public static void main(String args[]) { JFrame frame = new MouseWheelTest(); frame.setSize(300, 300); frame.show(); }
}
</source>
Demonstrating the PopupMenuListener
<source lang="java">
import java.awt.BorderLayout; import java.awt.Container; import javax.swing.ruboBoxModel; import javax.swing.DefaultComboBoxModel; import javax.swing.JComboBox; import javax.swing.JFrame; import javax.swing.event.PopupMenuEvent; import javax.swing.event.PopupMenuListener; public class PopupTest {
public static void main(String args[]) { JFrame frame = new JFrame("Popup Menu Listener"); Container contentPane = frame.getContentPane(); final String flavors[] = { "Item 1", "Item 2", "Item 3"}; PopupMenuListener listener = new PopupMenuListener() { boolean initialized = false; public void popupMenuCanceled(PopupMenuEvent e) { } public void popupMenuWillBecomeInvisible(PopupMenuEvent e) { } public void popupMenuWillBecomeVisible(PopupMenuEvent e) { if (!initialized) { JComboBox combo = (JComboBox) e.getSource(); ComboBoxModel model = new DefaultComboBoxModel(flavors); combo.setModel(model); initialized = true; } } }; JComboBox jc = new JComboBox(); jc.addPopupMenuListener(listener); jc.setMaximumRowCount(4); jc.setEditable(true); contentPane.add(jc, BorderLayout.NORTH); frame.pack(); frame.show(); }
}
</source>
Demonstrating the WindowListener
<source lang="java">
import java.awt.event.WindowEvent; import java.awt.event.WindowListener; import javax.swing.JFrame; public class WindowTest {
public static void main(String args[]) { JFrame frame = new JFrame("Window Listener"); WindowListener listener = new WindowListener() { public void windowActivated(WindowEvent w) { System.out.println(w); } public void windowClosed(WindowEvent w) { System.out.println(w); } public void windowClosing(WindowEvent w) { System.out.println(w); System.exit(0); } public void windowDeactivated(WindowEvent w) { System.out.println(w); } public void windowDeiconified(WindowEvent w) { System.out.println(w); } public void windowIconified(WindowEvent w) { System.out.println(w); } public void windowOpened(WindowEvent w) { System.out.println(w); } }; frame.addWindowListener(listener); frame.setSize(300, 300); frame.show(); }
}
</source>
Demonstrating the WindowListener with a WindowAdapter
<source lang="java">
import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import java.awt.event.WindowListener; import javax.swing.JFrame; public class WindowAdapterTest {
public static void main(String args[]) { JFrame frame = new JFrame("Window Listener"); WindowListener listener = new WindowAdapter() { public void windowClosing(WindowEvent w) { System.exit(0); } }; frame.addWindowListener(listener); frame.setSize(300, 300); frame.show(); }
}
</source>
Responding to Keystrokes
<source lang="java">
import java.awt.BorderLayout; import java.awt.Container; import java.awt.event.ActionEvent; import javax.swing.AbstractAction; import javax.swing.Action; import javax.swing.ActionMap; import javax.swing.InputMap; import javax.swing.JButton; import javax.swing.JComponent; import javax.swing.JFrame; import javax.swing.KeyStroke; public class KeyTester {
static class MyActionListener extends AbstractAction { MyActionListener(String s) { super(s); } public void actionPerformed(ActionEvent e) { System.out.println(getValue(Action.NAME)); } } public static void main(String args[]) { String actionKey = "theAction"; JFrame f = new JFrame("Key Tester");JButton jb1 = new JButton("<html>
Focused/Typed");
JButton jb2 = new JButton("<html><center>Ctrl-C
Window/Pressed"); JButton jb3 = new JButton("<html><center>Shift-D
Ancestor/Released"); Container pane = f.getContentPane(); pane.add(jb1, BorderLayout.NORTH); pane.add(jb2, BorderLayout.CENTER); pane.add(jb3, BorderLayout.SOUTH); KeyStroke stroke = KeyStroke.getKeyStroke("typed B"); Action action = new MyActionListener("Action Happened"); // Defaults to JComponent.WHEN_FOCUSED map InputMap inputMap = jb1.getInputMap(); inputMap.put(stroke, actionKey); ActionMap actionMap = jb1.getActionMap(); actionMap.put(actionKey, action); stroke = KeyStroke.getKeyStroke("ctrl C"); action = new MyActionListener("Action Didn"t Happen"); inputMap = jb2.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW); inputMap.put(stroke, actionKey); actionMap = jb2.getActionMap(); actionMap.put(actionKey, action); stroke = KeyStroke.getKeyStroke("shift released D"); action = new MyActionListener("What Happened?"); inputMap = jb3 .getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT); inputMap.put(stroke, actionKey); actionMap = jb3.getActionMap(); actionMap.put(actionKey, action); f.setSize(200, 200); f.show(); }
}
</source>