Как определить место выхода курсора?
Подскажите пожалуйста как реализовать это задание. Я не могу понять как определить место выхода курсора.
Само задание: "Создать форму, цвет которой меняется при выходе мыши за приделы формы. При этом в зависимости от того в какой стороне произошел выход (сверху, снизу, справа, слева) цвет окна должен измениться по-разному."
Я сделал, но оно не совсем выполнено верно у меня сделано с помощью 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);
}
}
});
}
}