Mega Code Archive

 
Categories / Java Tutorial / Swing Event
 

Managing Listener Lists with EventListenerList

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);         }       }     };     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 KeyTextComponentDemo {   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   } }