Main.java Source code

Java tutorial

Introduction

Here is the source code for Main.java

Source

import java.awt.Component;
import java.awt.GridLayout;
import java.awt.KeyboardFocusManager;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;

import javax.swing.JButton;
import javax.swing.JFrame;

public class Main {

    public static void main(String args[]) {
        JFrame frame = new JFrame("Focus Sample");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        ActionListener actionListener = new ActionFocusMover();
        MouseListener mouseListener = new MouseEnterFocusMover();

        frame.setLayout(new GridLayout(3, 3));
        for (int i = 1; i < 10; i++) {
            JButton button = new JButton(Integer.toString(i));
            button.addActionListener(actionListener);
            button.addMouseListener(mouseListener);
            if ((i % 2) != 0) {
                button.setFocusable(false);
            }
            frame.add(button);
        }

        frame.setSize(300, 200);
        frame.setVisible(true);
    }
}

class ActionFocusMover implements ActionListener {
    public void actionPerformed(ActionEvent actionEvent) {
        KeyboardFocusManager manager = KeyboardFocusManager.getCurrentKeyboardFocusManager();
        manager.focusNextComponent();
    }
}

class MouseEnterFocusMover extends MouseAdapter {
    public void mouseEntered(MouseEvent mouseEvent) {
        Component component = mouseEvent.getComponent();
        if (!component.hasFocus()) {
            component.requestFocusInWindow();
        }
    }
}