Mega Code Archive

 
Categories / Java Tutorial / Swing Event
 

Managing Listener Lists with AWTEventMulticaster

import java.awt.AWTEventMulticaster; import java.awt.BorderLayout; import java.awt.Color; 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 javax.swing.JComponent; import javax.swing.JFrame; import javax.swing.JTextField; public class KeyTextComponent extends JComponent {   private ActionListener actionListenerList = null;   public KeyTextComponent() {     setBackground(Color.CYAN);     KeyListener internalKeyListener = new KeyAdapter() {       public void keyPressed(KeyEvent keyEvent) {         if (actionListenerList != null) {           int keyCode = keyEvent.getKeyCode();           String keyText = KeyEvent.getKeyText(keyCode);           ActionEvent actionEvent = new ActionEvent(this, ActionEvent.ACTION_PERFORMED, keyText);           actionListenerList.actionPerformed(actionEvent);         }       }     };     MouseListener internalMouseListener = new MouseAdapter() {       public void mousePressed(MouseEvent mouseEvent) {         requestFocusInWindow();       }     };     addKeyListener(internalKeyListener);     addMouseListener(internalMouseListener);   }   public void addActionListener(ActionListener actionListener) {     actionListenerList = AWTEventMulticaster.add(actionListenerList, actionListener);   }   public void removeActionListener(ActionListener actionListener) {     actionListenerList = AWTEventMulticaster.remove(actionListenerList, actionListener);   }   public boolean isFocusable() {     return true;   }   public static void main(String[] a){     JFrame frame = new JFrame("Key Text Sample");     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);     KeyTextComponent keyTextComponent = new KeyTextComponent();     final JTextField textField = new JTextField();     ActionListener actionListener = new ActionListener() {       public void actionPerformed(ActionEvent actionEvent) {         String keyText = actionEvent.getActionCommand();         textField.setText(keyText);       }     };     keyTextComponent.addActionListener(actionListener);     frame.add(keyTextComponent, BorderLayout.CENTER);     textField.setText("Press keyboard after clicking the above blank area");     frame.add(textField, BorderLayout.SOUTH);     frame.setSize(300, 200);     frame.setVisible(true);   } }