Как определить место выхода курсора?

Подскажите пожалуйста как реализовать это задание. Я не могу понять как определить место выхода курсора.

Само задание: "Создать форму, цвет которой меняется при выходе мыши за приделы формы. При этом в зависимости от того в какой стороне произошел выход (сверху, снизу, справа, слева) цвет окна должен измениться по-разному."

Я сделал, но оно не совсем выполнено верно у меня сделано с помощью Point в событии mouseMoved я отслеживаю положение курсора на форме и если курсор вышел за определенные координаты XY, то панель меняет цвет.

import java.awt.*;
import javax.swing.*;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;

public class ColorFrame {

    public static void main(String[] args) {

        JFrame frame = new JFrame();
        frame.setSize(400, 400);
        frame.setResizable(false);
        frame.setLocationRelativeTo(frame);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setVisible(true);

        JPanel panel = new JPanel();
        //panel.setBorder(new CompoundBorder(new EmptyBorder(0,0,0,0), new TitledBorder("")));
        panel.setBackground(Color.white);
        panel.setBounds(0,0,400,400);
        panel.setVisible(true);
        frame.add(panel);

        frame.addMouseMotionListener(new MouseAdapter() {
            public void mouseMoved (MouseEvent e) {
                Point p = e.getPoint();
                int x = (int) p.getX();
                int y = (int) p.getY();

                frame.setTitle("Смена цвета " + "X: " + x + " " + "Y: " + y);
                //Верх
                if (p.getX() > 150 && p.getY() < 60) {
                    panel.setBackground(Color.RED);
                }
                //Право
                if (p.getX() > 390 && p.getY() > 150) {
                    panel.setBackground(Color.GREEN);
                }
                //Низ
                if (p.getX() > 150 && p.getY() > 390 ) {
                    panel.setBackground(Color.BLUE);
                }
                //Лево
                if (p.getX() < 40 && p.getY() > 180 ) {
                    panel.setBackground(Color.YELLOW);
                }
            }
        });

    }
}

Ответы (0 шт):