<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
		<id>http://www.jexp.ru/index.php?action=history&amp;feed=atom&amp;title=Java%2FEvent%2FEvent_Queue</id>
		<title>Java/Event/Event Queue - История изменений</title>
		<link rel="self" type="application/atom+xml" href="http://www.jexp.ru/index.php?action=history&amp;feed=atom&amp;title=Java%2FEvent%2FEvent_Queue"/>
		<link rel="alternate" type="text/html" href="http://www.jexp.ru/index.php?title=Java/Event/Event_Queue&amp;action=history"/>
		<updated>2026-04-22T10:34:41Z</updated>
		<subtitle>История изменений этой страницы в вики</subtitle>
		<generator>MediaWiki 1.30.0</generator>

	<entry>
		<id>http://www.jexp.ru/index.php?title=Java/Event/Event_Queue&amp;diff=5752&amp;oldid=prev</id>
		<title>Admin: 1 версия</title>
		<link rel="alternate" type="text/html" href="http://www.jexp.ru/index.php?title=Java/Event/Event_Queue&amp;diff=5752&amp;oldid=prev"/>
				<updated>2010-06-01T05:58:00Z</updated>
		
		<summary type="html">&lt;p&gt;1 версия&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr style=&quot;vertical-align: top;&quot; lang=&quot;ru&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;← Предыдущая&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;Версия 05:58, 1 июня 2010&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; style=&quot;text-align: center;&quot; lang=&quot;ru&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(нет различий)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
		<author><name>Admin</name></author>	</entry>

	<entry>
		<id>http://www.jexp.ru/index.php?title=Java/Event/Event_Queue&amp;diff=5751&amp;oldid=prev</id>
		<title> в 18:01, 31 мая 2010</title>
		<link rel="alternate" type="text/html" href="http://www.jexp.ru/index.php?title=Java/Event/Event_Queue&amp;diff=5751&amp;oldid=prev"/>
				<updated>2010-05-31T18:01:43Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;== ActionEvent.getActionCommand() ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
import java.awt.FlowLayout;&lt;br /&gt;
import java.awt.event.ActionEvent;&lt;br /&gt;
import java.awt.event.ActionListener;&lt;br /&gt;
import javax.swing.JButton;&lt;br /&gt;
import javax.swing.JFrame;&lt;br /&gt;
class ButtonDemo implements ActionListener {&lt;br /&gt;
  JButton jbtnA = new JButton(&amp;quot;Alpha&amp;quot;);&lt;br /&gt;
  JButton jbtnB = new JButton(&amp;quot;Beta&amp;quot;);&lt;br /&gt;
  ButtonDemo() {&lt;br /&gt;
    JFrame jfrm = new JFrame(&amp;quot;A Button Example&amp;quot;);&lt;br /&gt;
    jfrm.setLayout(new FlowLayout());&lt;br /&gt;
    jfrm.setSize(220, 90);&lt;br /&gt;
    jfrm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);&lt;br /&gt;
    jbtnA.addActionListener(this);&lt;br /&gt;
    jbtnB.addActionListener(this);&lt;br /&gt;
    jfrm.add(jbtnA);&lt;br /&gt;
    jfrm.add(jbtnB);&lt;br /&gt;
    jfrm.setVisible(true);&lt;br /&gt;
  }&lt;br /&gt;
  public void actionPerformed(ActionEvent ae) {&lt;br /&gt;
    String ac = ae.getActionCommand();&lt;br /&gt;
    if (ac.equals(&amp;quot;Alpha&amp;quot;)) {&lt;br /&gt;
      if (jbtnB.isEnabled()) {&lt;br /&gt;
        System.out.println(&amp;quot;Alpha pressed. Beta is disabled.&amp;quot;);&lt;br /&gt;
        jbtnB.setEnabled(false);&lt;br /&gt;
      } else {&lt;br /&gt;
        System.out.println(&amp;quot;Alpha pressed. Beta is enabled.&amp;quot;);&lt;br /&gt;
        jbtnB.setEnabled(true);&lt;br /&gt;
      }&lt;br /&gt;
    } else if (ac.equals(&amp;quot;Beta&amp;quot;))&lt;br /&gt;
      System.out.println(&amp;quot;Beta pressed.&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
  public static void main(String args[]) {&lt;br /&gt;
    new ButtonDemo();&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Adding an InputMap to a Component ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
import javax.swing.InputMap;&lt;br /&gt;
import javax.swing.JButton;&lt;br /&gt;
import javax.swing.JComponent;&lt;br /&gt;
import javax.swing.KeyStroke;&lt;br /&gt;
public class Main {&lt;br /&gt;
  public static void main(String[] argv) throws Exception {&lt;br /&gt;
    InputMap inputMap = new InputMap();&lt;br /&gt;
    inputMap.put(KeyStroke.getKeyStroke(&amp;quot;F2&amp;quot;), &amp;quot;actionName&amp;quot;);&lt;br /&gt;
    JButton component = new JButton(&amp;quot;button&amp;quot;);&lt;br /&gt;
    &lt;br /&gt;
    inputMap.setParent(component.getInputMap(JComponent.WHEN_FOCUSED));&lt;br /&gt;
    component.setInputMap(JComponent.WHEN_FOCUSED, inputMap);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Event object has information about an event, that has happened. ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
import java.awt.event.ActionEvent;&lt;br /&gt;
import java.awt.event.ActionListener;&lt;br /&gt;
import java.text.DateFormat;&lt;br /&gt;
import java.util.Calendar;&lt;br /&gt;
import java.util.Date;&lt;br /&gt;
import java.util.Locale;&lt;br /&gt;
import javax.swing.JButton;&lt;br /&gt;
import javax.swing.JFrame;&lt;br /&gt;
import javax.swing.JPanel;&lt;br /&gt;
public class EventObject {&lt;br /&gt;
  public static void main(String[] args) {&lt;br /&gt;
    JFrame f = new JFrame();&lt;br /&gt;
    JButton ok = new JButton(&amp;quot;Ok&amp;quot;);&lt;br /&gt;
    ok.addActionListener(new ActionListener() {&lt;br /&gt;
      public void actionPerformed(ActionEvent event) {&lt;br /&gt;
        Calendar cal = Calendar.getInstance();&lt;br /&gt;
        cal.setTimeInMillis(event.getWhen());&lt;br /&gt;
        Locale locale = Locale.getDefault();&lt;br /&gt;
        String s = DateFormat.getTimeInstance(DateFormat.SHORT, locale).format(new Date());&lt;br /&gt;
        if (event.getID() == ActionEvent.ACTION_PERFORMED)&lt;br /&gt;
          System.out.println(&amp;quot; Event Id: ACTION_PERFORMED&amp;quot;);&lt;br /&gt;
        System.out.println(&amp;quot; Time: &amp;quot; + s);&lt;br /&gt;
        String source = event.getSource().getClass().getName();&lt;br /&gt;
        System.out.println(&amp;quot; Source: &amp;quot; + source);&lt;br /&gt;
        int mod = event.getModifiers();&lt;br /&gt;
        if ((mod &amp;amp; ActionEvent.ALT_MASK) &amp;gt; 0)&lt;br /&gt;
          System.out.println(&amp;quot;Alt &amp;quot;);&lt;br /&gt;
        if ((mod &amp;amp; ActionEvent.SHIFT_MASK) &amp;gt; 0)&lt;br /&gt;
          System.out.println(&amp;quot;Shift &amp;quot;);&lt;br /&gt;
        if ((mod &amp;amp; ActionEvent.META_MASK) &amp;gt; 0)&lt;br /&gt;
          System.out.println(&amp;quot;Meta &amp;quot;);&lt;br /&gt;
        if ((mod &amp;amp; ActionEvent.CTRL_MASK) &amp;gt; 0)&lt;br /&gt;
          System.out.println(&amp;quot;Ctrl &amp;quot;);&lt;br /&gt;
      }&lt;br /&gt;
    });&lt;br /&gt;
    f.add(ok);&lt;br /&gt;
    f.setSize(420, 250);&lt;br /&gt;
    f.setLocationRelativeTo(null);&lt;br /&gt;
    f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);&lt;br /&gt;
    f.setVisible(true);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Event source and listener ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
import java.util.ArrayList;&lt;br /&gt;
import java.util.EventListener;&lt;br /&gt;
import java.util.EventObject;&lt;br /&gt;
abstract class TestEventSource {&lt;br /&gt;
  public abstract void addListener(TestEventListener l);&lt;br /&gt;
  public abstract void removeListener(TestEventListener l);&lt;br /&gt;
  public abstract void fireEvent(java.util.EventObject o);&lt;br /&gt;
  public void test() {&lt;br /&gt;
    addListener(new TestEventListener(&amp;quot;A&amp;quot;));&lt;br /&gt;
    fireEvent(new java.util.EventObject(this));&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
class TestEventListener implements EventListener {&lt;br /&gt;
  String id;&lt;br /&gt;
  public TestEventListener(String id) {&lt;br /&gt;
    this.id = id;&lt;br /&gt;
  }&lt;br /&gt;
  public void handleEvent(EventObject o) {&lt;br /&gt;
    System.out.println(id + &amp;quot; called&amp;quot;);&lt;br /&gt;
    if (id.equals(&amp;quot;C&amp;quot;)) {&lt;br /&gt;
      ((TestEventSource) o.getSource()).removeListener(this);&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
public class Main extends TestEventSource {&lt;br /&gt;
  ArrayList listeners = new ArrayList();&lt;br /&gt;
  public void addListener(TestEventListener l) {&lt;br /&gt;
    listeners.add(l);&lt;br /&gt;
  }&lt;br /&gt;
  public void removeListener(TestEventListener l) {&lt;br /&gt;
    listeners.remove(l);&lt;br /&gt;
  }&lt;br /&gt;
  public void fireEvent(EventObject o) {&lt;br /&gt;
    for (int i = 0; i &amp;lt; listeners.size(); i++) {&lt;br /&gt;
      TestEventListener l = (TestEventListener) listeners.get(i);&lt;br /&gt;
      l.handleEvent(o);&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  public static void main(String[] args) {&lt;br /&gt;
    Main pfles = new Main();&lt;br /&gt;
    pfles.test();&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== int java.awt.event.WindowEvent.WINDOW_OPENED ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
import java.awt.AWTEvent;&lt;br /&gt;
import java.awt.Toolkit;&lt;br /&gt;
import java.awt.event.AWTEventListener;&lt;br /&gt;
import java.awt.event.ActionEvent;&lt;br /&gt;
import java.awt.event.ruponentEvent;&lt;br /&gt;
import java.awt.event.WindowEvent;&lt;br /&gt;
import javax.swing.AbstractAction;&lt;br /&gt;
import javax.swing.JFrame;&lt;br /&gt;
import javax.swing.JMenu;&lt;br /&gt;
import javax.swing.JMenuBar;&lt;br /&gt;
public class Main implements AWTEventListener {&lt;br /&gt;
  public void eventDispatched(AWTEvent evt) {&lt;br /&gt;
    if (evt.getID() == WindowEvent.WINDOW_OPENED) {&lt;br /&gt;
      ComponentEvent cev = (ComponentEvent) evt;&lt;br /&gt;
      if (cev.getComponent() instanceof JFrame) {&lt;br /&gt;
        System.out.println(&amp;quot;event: &amp;quot; + evt);&lt;br /&gt;
        JFrame frame = (JFrame) cev.getComponent();&lt;br /&gt;
        loadSettings(frame);&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  public static void loadSettings(JFrame frame) {&lt;br /&gt;
    System.out.println(&amp;quot;loading&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
  public static void saveSettings() {&lt;br /&gt;
    System.out.println(&amp;quot;saving&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
  public static void main(String[] args) throws Exception {&lt;br /&gt;
    Toolkit tk = Toolkit.getDefaultToolkit();&lt;br /&gt;
    final Main main = new Main();&lt;br /&gt;
    tk.addAWTEventListener(main, AWTEvent.WINDOW_EVENT_MASK);&lt;br /&gt;
    final JFrame frame = new JFrame(&amp;quot;&amp;quot;);&lt;br /&gt;
    frame.setName(&amp;quot;your frame&amp;quot;);&lt;br /&gt;
    JMenuBar mb = new JMenuBar();&lt;br /&gt;
    JMenu menu = new JMenu(&amp;quot;File&amp;quot;);&lt;br /&gt;
    menu.add(new AbstractAction(&amp;quot;Quit&amp;quot;) {&lt;br /&gt;
      public void actionPerformed(ActionEvent evt) {&lt;br /&gt;
        try {&lt;br /&gt;
          main.saveSettings();&lt;br /&gt;
          System.exit(0);&lt;br /&gt;
        } catch (Exception ex) {&lt;br /&gt;
          System.out.println(ex);&lt;br /&gt;
        }&lt;br /&gt;
      }&lt;br /&gt;
    });&lt;br /&gt;
    mb.add(menu);&lt;br /&gt;
    frame.setJMenuBar(mb);&lt;br /&gt;
    frame.pack();&lt;br /&gt;
    frame.setVisible(true);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== JComponent.WHEN_IN_FOCUSED_WINDOW ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
import java.awt.event.ActionEvent;&lt;br /&gt;
import javax.swing.AbstractAction;&lt;br /&gt;
import javax.swing.Action;&lt;br /&gt;
import javax.swing.JButton;&lt;br /&gt;
import javax.swing.JComponent;&lt;br /&gt;
import javax.swing.KeyStroke;&lt;br /&gt;
public class Main {&lt;br /&gt;
  public static void main(String[] argv) throws Exception {&lt;br /&gt;
    JButton component = new JButton();&lt;br /&gt;
    MyAction action = new MyAction();&lt;br /&gt;
    component.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(KeyStroke.getKeyStroke(&amp;quot;F2&amp;quot;),&lt;br /&gt;
        action.getValue(Action.NAME));&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
class MyAction extends AbstractAction {&lt;br /&gt;
  public MyAction() {&lt;br /&gt;
    super(&amp;quot;my action&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
  public void actionPerformed(ActionEvent e) {&lt;br /&gt;
    System.out.println(&amp;quot;hi&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Multiple sources: A listener can be plugged into several sources. ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
import java.awt.event.ActionEvent;&lt;br /&gt;
import java.awt.event.ActionListener;&lt;br /&gt;
import javax.swing.JButton;&lt;br /&gt;
import javax.swing.JFrame;&lt;br /&gt;
import javax.swing.JPanel;&lt;br /&gt;
class ButtonListener implements ActionListener {&lt;br /&gt;
  public void actionPerformed(ActionEvent e) {&lt;br /&gt;
    JButton o = (JButton) e.getSource();&lt;br /&gt;
    String label = o.getText();&lt;br /&gt;
    System.out.println(label + &amp;quot; button clicked&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
public class MultipleSources {&lt;br /&gt;
  public static void main(String[] args) {&lt;br /&gt;
    JPanel panel = new JPanel();&lt;br /&gt;
    JButton close = new JButton(&amp;quot;Close&amp;quot;);&lt;br /&gt;
    close.addActionListener(new ButtonListener());&lt;br /&gt;
    JButton open = new JButton(&amp;quot;Open&amp;quot;);&lt;br /&gt;
    open.addActionListener(new ButtonListener());&lt;br /&gt;
    JButton find = new JButton(&amp;quot;Find&amp;quot;);&lt;br /&gt;
    find.addActionListener(new ButtonListener());&lt;br /&gt;
    JButton save = new JButton(&amp;quot;Save&amp;quot;);&lt;br /&gt;
    save.addActionListener(new ButtonListener());&lt;br /&gt;
    panel.add(close);&lt;br /&gt;
    panel.add(open);&lt;br /&gt;
    panel.add(find);&lt;br /&gt;
    panel.add(save);&lt;br /&gt;
    JFrame f = new JFrame();&lt;br /&gt;
    f.add(panel);&lt;br /&gt;
    f.setSize(400, 300);&lt;br /&gt;
    f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);&lt;br /&gt;
    f.setVisible(true);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Register action ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
import java.awt.event.ActionEvent;&lt;br /&gt;
import javax.swing.AbstractAction;&lt;br /&gt;
import javax.swing.Action;&lt;br /&gt;
import javax.swing.JButton;&lt;br /&gt;
public class Main {&lt;br /&gt;
  public static void main(String[] argv) throws Exception {&lt;br /&gt;
    JButton component = new JButton();&lt;br /&gt;
    MyAction action = new MyAction();&lt;br /&gt;
    component.getActionMap().put(action.getValue(Action.NAME), action);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
class MyAction extends AbstractAction {&lt;br /&gt;
  public MyAction() {&lt;br /&gt;
    super(&amp;quot;my action&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
  public void actionPerformed(ActionEvent e) {&lt;br /&gt;
    System.out.println(&amp;quot;hi&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Register several listeners for one event. ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
import java.awt.BorderLayout;&lt;br /&gt;
import java.awt.event.ActionEvent;&lt;br /&gt;
import java.awt.event.ActionListener;&lt;br /&gt;
import javax.swing.JButton;&lt;br /&gt;
import javax.swing.JFrame;&lt;br /&gt;
import javax.swing.JLabel;&lt;br /&gt;
import javax.swing.JPanel;&lt;br /&gt;
import javax.swing.JSpinner;&lt;br /&gt;
public class MultipleListeners {&lt;br /&gt;
  JLabel statusbar = new JLabel(&amp;quot;0&amp;quot;);&lt;br /&gt;
  JSpinner spinner = new JSpinner();&lt;br /&gt;
  static int count = 0;&lt;br /&gt;
  class ButtonListener1 implements ActionListener {&lt;br /&gt;
    public void actionPerformed(ActionEvent e) {&lt;br /&gt;
      Integer val = (Integer) spinner.getValue();&lt;br /&gt;
      spinner.setValue(++val);&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  class ButtonListener2 implements ActionListener {&lt;br /&gt;
    public void actionPerformed(ActionEvent e) {&lt;br /&gt;
      statusbar.setText(Integer.toString(++count));&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  public MultipleListeners() {&lt;br /&gt;
    JPanel panel = new JPanel();&lt;br /&gt;
    JButton add = new JButton(&amp;quot;+&amp;quot;);&lt;br /&gt;
    add.addActionListener(new ButtonListener1());&lt;br /&gt;
    add.addActionListener(new ButtonListener2());&lt;br /&gt;
    panel.add(add);&lt;br /&gt;
    panel.add(spinner);&lt;br /&gt;
    JFrame f = new JFrame();&lt;br /&gt;
    f.add(panel);&lt;br /&gt;
    f.add(statusbar, BorderLayout.SOUTH);&lt;br /&gt;
    f.setSize(300, 200);&lt;br /&gt;
    f.setLocationRelativeTo(null);&lt;br /&gt;
    f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);&lt;br /&gt;
    f.setVisible(true);&lt;br /&gt;
  }&lt;br /&gt;
  public static void main(String[] args) {&lt;br /&gt;
    new MultipleListeners();&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Use the Event queue to retrieve event ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
import java.awt.AWTEvent;&lt;br /&gt;
import java.awt.Container;&lt;br /&gt;
import java.awt.EventQueue;&lt;br /&gt;
import java.awt.Frame;&lt;br /&gt;
import java.awt.Graphics;&lt;br /&gt;
import java.awt.Point;&lt;br /&gt;
import java.awt.Toolkit;&lt;br /&gt;
import java.awt.event.ActionEvent;&lt;br /&gt;
import java.awt.event.ActionListener;&lt;br /&gt;
import java.awt.event.MouseEvent;&lt;br /&gt;
import java.awt.event.WindowAdapter;&lt;br /&gt;
import java.awt.event.WindowEvent;&lt;br /&gt;
import javax.swing.JButton;&lt;br /&gt;
import javax.swing.JFrame;&lt;br /&gt;
import javax.swing.JPanel;&lt;br /&gt;
public class EventQueuePanel extends JPanel implements ActionListener {&lt;br /&gt;
  EventQueuePanel() {&lt;br /&gt;
    JButton button = new JButton(&amp;quot;Draw line&amp;quot;);&lt;br /&gt;
    add(button);&lt;br /&gt;
    button.addActionListener(this);&lt;br /&gt;
  }&lt;br /&gt;
  public void actionPerformed(ActionEvent evt) {&lt;br /&gt;
    Graphics g = getGraphics();&lt;br /&gt;
    displayPrompt(g, &amp;quot;Click to chooose the first point&amp;quot;);&lt;br /&gt;
    Point p = getClick();&lt;br /&gt;
    g.drawOval(p.x - 2, p.y - 2, 4, 4);&lt;br /&gt;
    displayPrompt(g, &amp;quot;Click to choose the second point&amp;quot;);&lt;br /&gt;
    Point q = getClick();&lt;br /&gt;
    g.drawOval(q.x - 2, q.y - 2, 4, 4);&lt;br /&gt;
    g.drawLine(p.x, p.y, q.x, q.y);&lt;br /&gt;
    displayPrompt(g, &amp;quot;Done! Press button the start again.&amp;quot;);&lt;br /&gt;
    g.dispose();&lt;br /&gt;
  }&lt;br /&gt;
  public void displayPrompt(Graphics g, String s) {&lt;br /&gt;
    y += 20;&lt;br /&gt;
    g.drawString(s, 0, y);&lt;br /&gt;
  }&lt;br /&gt;
  public Point getClick() {&lt;br /&gt;
    EventQueue eq = Toolkit.getDefaultToolkit().getSystemEventQueue();&lt;br /&gt;
    while (true) {&lt;br /&gt;
      try {&lt;br /&gt;
        AWTEvent evt = eq.getNextEvent();&lt;br /&gt;
        if (evt.getID() == MouseEvent.MOUSE_PRESSED) {&lt;br /&gt;
          MouseEvent mevt = (MouseEvent) evt;&lt;br /&gt;
          Point p = mevt.getPoint();&lt;br /&gt;
          Point top = getRootPane().getLocation();&lt;br /&gt;
          p.x -= top.x;&lt;br /&gt;
          p.y -= top.y;&lt;br /&gt;
          return p;&lt;br /&gt;
        }&lt;br /&gt;
      } catch (InterruptedException e) {&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  private int y = 60;&lt;br /&gt;
  public static void main(String[] args) {&lt;br /&gt;
    JFrame frame = new JFrame();&lt;br /&gt;
    frame.setTitle(&amp;quot;EventQueueTest&amp;quot;);&lt;br /&gt;
    frame.setSize(300, 200);&lt;br /&gt;
    frame.addWindowListener(new WindowAdapter() {&lt;br /&gt;
      public void windowClosing(WindowEvent e) {&lt;br /&gt;
        System.exit(0);&lt;br /&gt;
      }&lt;br /&gt;
    });&lt;br /&gt;
    Container contentPane = frame.getContentPane();&lt;br /&gt;
    contentPane.add(new EventQueuePanel());&lt;br /&gt;
    frame.show();&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
           &lt;br /&gt;
         &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Using an inner ActionListener class. ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
import java.awt.event.ActionEvent;&lt;br /&gt;
import java.awt.event.ActionListener;&lt;br /&gt;
import javax.swing.JButton;&lt;br /&gt;
import javax.swing.JFrame;&lt;br /&gt;
public class InnerClass {&lt;br /&gt;
  class ButtonListener implements ActionListener {&lt;br /&gt;
    public void actionPerformed(ActionEvent e) {&lt;br /&gt;
      System.exit(0);&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  public InnerClass() {&lt;br /&gt;
    JButton close = new JButton(&amp;quot;Close&amp;quot;);&lt;br /&gt;
    ButtonListener listener = new ButtonListener();&lt;br /&gt;
    close.addActionListener(listener);&lt;br /&gt;
    JFrame f = new JFrame();&lt;br /&gt;
    f.add(close);&lt;br /&gt;
    f.setSize(300, 200);&lt;br /&gt;
    f.setLocationRelativeTo(null);&lt;br /&gt;
    f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);&lt;br /&gt;
    f.setVisible(true);&lt;br /&gt;
  }&lt;br /&gt;
  public static void main(String[] args) {&lt;br /&gt;
    new InnerClass();&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== void java.awt.Toolkit.addAWTEventListener(AWTEventListener listener, long eventMask) ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
import java.awt.AWTEvent;&lt;br /&gt;
import java.awt.Toolkit;&lt;br /&gt;
import java.awt.event.AWTEventListener;&lt;br /&gt;
import java.awt.event.ActionEvent;&lt;br /&gt;
import java.awt.event.ruponentEvent;&lt;br /&gt;
import java.awt.event.WindowEvent;&lt;br /&gt;
import javax.swing.AbstractAction;&lt;br /&gt;
import javax.swing.JFrame;&lt;br /&gt;
import javax.swing.JMenu;&lt;br /&gt;
import javax.swing.JMenuBar;&lt;br /&gt;
public class Main implements AWTEventListener {&lt;br /&gt;
  public void eventDispatched(AWTEvent evt) {&lt;br /&gt;
    if (evt.getID() == WindowEvent.WINDOW_OPENED) {&lt;br /&gt;
      ComponentEvent cev = (ComponentEvent) evt;&lt;br /&gt;
      if (cev.getComponent() instanceof JFrame) {&lt;br /&gt;
        System.out.println(&amp;quot;event: &amp;quot; + evt);&lt;br /&gt;
        JFrame frame = (JFrame) cev.getComponent();&lt;br /&gt;
        loadSettings(frame);&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  public static void loadSettings(JFrame frame) {&lt;br /&gt;
    System.out.println(&amp;quot;loading&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
  public static void saveSettings() {&lt;br /&gt;
    System.out.println(&amp;quot;saving&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
  public static void main(String[] args) throws Exception {&lt;br /&gt;
    Toolkit tk = Toolkit.getDefaultToolkit();&lt;br /&gt;
    final Main main = new Main();&lt;br /&gt;
    tk.addAWTEventListener(main, AWTEvent.WINDOW_EVENT_MASK);&lt;br /&gt;
    final JFrame frame = new JFrame(&amp;quot;&amp;quot;);&lt;br /&gt;
    frame.setName(&amp;quot;your frame&amp;quot;);&lt;br /&gt;
    JMenuBar mb = new JMenuBar();&lt;br /&gt;
    JMenu menu = new JMenu(&amp;quot;File&amp;quot;);&lt;br /&gt;
    menu.add(new AbstractAction(&amp;quot;Quit&amp;quot;) {&lt;br /&gt;
      public void actionPerformed(ActionEvent evt) {&lt;br /&gt;
        try {&lt;br /&gt;
          main.saveSettings();&lt;br /&gt;
          System.exit(0);&lt;br /&gt;
        } catch (Exception ex) {&lt;br /&gt;
          System.out.println(ex);&lt;br /&gt;
        }&lt;br /&gt;
      }&lt;br /&gt;
    });&lt;br /&gt;
    mb.add(menu);&lt;br /&gt;
    frame.setJMenuBar(mb);&lt;br /&gt;
    frame.pack();&lt;br /&gt;
    frame.setVisible(true);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;/div&gt;</summary>
			</entry>

	</feed>