Как бы вы обнаружили, если курсор мыши находится внутри JFrame в Java? - PullRequest
3 голосов
/ 20 декабря 2009

Как бы вы написали метод для определения, находится ли курсор мыши внутри JFrame в Java? Метод должен возвращать true, если он внутри, или false.

Спасибо, Андрей

Ответы [ 4 ]

2 голосов
/ 20 января 2016

Предполагая, что событий mouseEntered и mouseExited недостаточно (это было для меня, поскольку я хотел избежать дополнительных вызовов на mouseExited, когда курсор мыши вводил границы кнопки на панели), я пришел с этой короткой проверкой, чтобы добавить в начало моих mouseEntered и mouseExited обработчиков событий:

public static boolean isMouseWithinComponent(Component c)
{
    Point mousePos = MouseInfo.getPointerInfo().getLocation();
    Rectangle bounds = c.getBounds();
    bounds.setLocation(c.getLocationOnScreen());
    return bounds.contains(mousePos);
}
1 голос
/ 20 декабря 2009

Добавьте слушатель мыши к вашему JFrame и ищите события mouseEntered и mouseExited.

frame.addMouseListener(new MouseListener() {
    public void mouseEntered(java.awt.event.MouseEvent evt) {
        // do your action here
    }

    public void mouseExited(java.awt.event.MouseEvent evt) {
        // do your action here
    }
});
1 голос
/ 20 декабря 2009

Чтобы развернуть комментарий в исходном сообщении, вы можете использовать класс MouseInfo, чтобы получить текущее местоположение мыши. Затем вы сравниваете это местоположение с границами кадра, чтобы получить соответствующее значение.

1 голос
/ 20 декабря 2009

Вы должны добавить слушателя мыши и реагировать на mouseEntered-Event:

JFrame.addMouseListener( new MouseAdapter() {
    public void mouseEntered( MouseEvent e ) {
        // your code here
    }
} );
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...