KeyTextTester2.java Source code

Java tutorial

Introduction

Here is the source code for KeyTextTester2.java

Source

import java.awt.BorderLayout;
import java.awt.Canvas;
import java.awt.Color;
import java.awt.Container;
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.JFrame;
import javax.swing.JTextField;
import javax.swing.event.EventListenerList;

public class KeyTextTester2 {
    public static void main(String args[]) {
        JFrame frame = new JFrame("Key Text Sample");
        KeyTextComponent2 keyTextComponent = new KeyTextComponent2();
        final JTextField textField = new JTextField();

        ActionListener actionListener = new ActionListener() {
            public void actionPerformed(ActionEvent actionEvent) {
                String keyText = actionEvent.getActionCommand();
                textField.setText(keyText);
            }
        };
        keyTextComponent.addActionListener(actionListener);

        Container contentPane = frame.getContentPane();
        contentPane.add(keyTextComponent, BorderLayout.CENTER);
        contentPane.add(textField, BorderLayout.SOUTH);
        frame.setSize(300, 200);
        frame.setVisible(true);
    }
}

class KeyTextComponent2 extends Canvas {
    private EventListenerList actionListenerList = new EventListenerList();

    public KeyTextComponent2() {
        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);
                    fireActionPerformed(actionEvent);
                }
            }
        };

        MouseListener internalMouseListener = new MouseAdapter() {
            public void mousePressed(MouseEvent mouseEvent) {
                requestFocus();
            }
        };

        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 isFocusTraversable() {
        return true;
    }
}