2014-02-07 5 views
2

У меня есть холст внутри окна. Окно полноэкранное, но холста нет. Мне нужно получить положение мыши внутри холста, но НЕ внутри окна. Как мне это сделать?Получить мышь в холсте (java)

Мне нужно получить эту позицию мыши несколько раз в секунду, даже если мышь не движется, поэтому использование прослушивателя MouseMoved недостаточно.

Есть ли способ получить положение мыши на холсте без необходимости вызова какого-либо mouselistener?

ответ

3

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

1

Вот простой пример того, как я это сделаю. На первом:

  • Получить компоненты фрейму в:

    Component[] components = yourJFrame.getComponents(); 
    
  • Получите ваш холст (примечание: если вы добавили кое-что, прежде чем добавить холст, он не будет компонент 0. Пример в псевдокоде add : button1, add:button2, add:canvas - холст = компоненты [2]):

    Component canvas = components[0]; 
    
  • Получить позицию мыши:

    int mouse_x=MouseInfo.getPointerInfo().getLocation().x-canvas.getLocationOnScreen().x; 
    int mouse_y=MouseInfo.getPointerInfo().getLocation().y-canvas.getLocationOnScreen().y; 
    

Нет абсолютно никакой необходимости в прослушивании. Не стесняйтесь комментировать, если у вас есть какие-либо вопросы по этому поводу.

Смежные вопросы