Java Swing EventListenerList create

Description

Java Swing EventListenerList create


import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.util.EventListener;

import javax.swing.JComponent;
import javax.swing.JFrame;
import javax.swing.JTextField;
import javax.swing.event.EventListenerList;

class KeyTextComponent extends JComponent {
   private EventListenerList actionListenerList = new EventListenerList();

   public KeyTextComponent() {
      KeyListener internalKeyListener = new KeyAdapter() {
         public void keyPressed(KeyEvent keyEvent) {
            System.out.println("keyPressed");
            if (actionListenerList != null) {
               int keyCode = keyEvent.getKeyCode();
               String keyText = KeyEvent.getKeyText(keyCode);
               ActionEvent actionEvent = new ActionEvent(this, ActionEvent.ACTION_PERFORMED, keyText);
               fireActionPerformed(actionEvent);
            }//from w  ww. j a  v a  2s. c  o  m
         }
      };
      MouseListener internalMouseListener = new MouseAdapter() {
         public void mousePressed(MouseEvent mouseEvent) {
            requestFocusInWindow();
         }
      };

      addKeyListener(internalKeyListener);
      addMouseListener(internalMouseListener);
   }

   public void addActionListener(ActionListener actionListener) {
      actionListenerList.add(ActionListener.class, actionListener);
   }

   public void removeActionListener(ActionListener actionListener) {
      actionListenerList.remove(ActionListener.class, actionListener);
   }

   protected void fireActionPerformed(ActionEvent actionEvent) {
      EventListener listenerList[] = actionListenerList.getListeners(ActionListener.class);
      for (int i = 0, n = listenerList.length; i < n; i++) {
         ((ActionListener) listenerList[i]).actionPerformed(actionEvent);
      }
   }

   public boolean isFocusable() {
      return true;
   }
}

public class Main {
   public static void main(String[] args) {
      JFrame aWindow = new JFrame();
      aWindow.setBounds(30, 30, 300, 300); // Size
      aWindow.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

      KeyTextComponent com = new KeyTextComponent();
      aWindow.add(com, "Center");
      com.addActionListener(new ActionListener() {

         public void actionPerformed(ActionEvent e) {
            System.out.println("action");

         }

      });

      aWindow.add(new JTextField(), "South");

      aWindow.setVisible(true); // Display the window
   }
}



PreviousNext

Related