FocusTest.java Source code

Java tutorial

Introduction

Here is the source code for FocusTest.java

Source

import java.awt.BorderLayout;
import java.awt.Component;
import java.awt.Container;
import java.awt.event.FocusEvent;
import java.awt.event.FocusListener;
import java.awt.event.KeyEvent;

import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;

public class FocusTest {
    public static void main(String args[]) {
        JFrame frame = new JFrame();
        Container contentPane = frame.getContentPane();

        FocusListener listener = new FocusListener() {
            public void focusGained(FocusEvent e) {
                dumpInfo(e);
            }

            public void focusLost(FocusEvent e) {
                dumpInfo(e);
            }

            private void dumpInfo(FocusEvent e) {
                System.out.println("Source  : " + name(e.getComponent()));
                System.out.println("Opposite : " + name(e.getOppositeComponent()));
                System.out.println("Temporary: " + e.isTemporary());
            }

            private String name(Component c) {
                return (c == null) ? null : c.getName();
            }
        };

        // First
        JPanel panel = new JPanel();
        JLabel label = new JLabel("Label 1: ");
        JTextField text = new JTextField("Type your text", 15);
        text.setName("First");
        text.addFocusListener(listener);
        label.setDisplayedMnemonic(KeyEvent.VK_1);
        label.setLabelFor(text);
        panel.add(label);
        panel.add(text);
        contentPane.add(panel, BorderLayout.NORTH);

        // Second
        panel = new JPanel();
        label = new JLabel("Label 2: ");
        text = new JTextField("14.0", 10);
        text.setName("Second");
        text.addFocusListener(listener);
        text.setHorizontalAlignment(JTextField.RIGHT);
        label.setDisplayedMnemonic(KeyEvent.VK_2);
        label.setLabelFor(text);
        panel.add(label);
        panel.add(text);
        contentPane.add(panel, BorderLayout.SOUTH);

        frame.pack();
        frame.show();
    }
}