2016-08-05 2 views
1

Я пытаюсь создать инструмент, похожий на инструмент WindowFinder внутри программы Visual Studio «Spy ++». Я хотел бы иметь кнопку Jmenu в моем JFrame, которая после щелчка открывает диалог с кнопкой и кнопкой Ok. После нажатия кнопки «ОК» следующее нажатие будет другим окном, в котором я хочу получить идентификатор.Координаты мыши за пределами моего окна

Я начал эту проблему, пытаясь создать прозрачное окно над всеми другими окнами с размером экрана, а затем использовать прослушиватель мыши для прослушивания следующего щелчка по этому прозрачному окну. Хотя, когда я пытаюсь сделать окно прозрачным, он делает все окно темным оттенком, который я не вижу.

Я попытался найти пару решений (1, 2) для подобных проблем на этом сайте, но все закончилось плохо. Я ищу совет по устранению этой проблемы при использовании этого метода, или я ищу совершенно новый метод, чтобы делать то, что я пытаюсь. Кроме того, я пытаюсь заставить это работать как на Linux, так и на Windows, но в настоящее время пытается заставить его работать в Linux сначала (используя Redhat 6).

Любая помощь была бы принята с благодарностью.

+0

Кстати, я бы рекомендовал использовать JavaFX, а не Swing. JFrame устарел, и JavaFX действительно хорош :) – Caelum

+2

Я бы даже не использовал JavaFx или какой-либо инструмент Java для этого, а скорее язык, который может стать уютным с ОС. –

+2

@Caelum 'JFrame устарел' Это? У вас есть ссылка? – copeg

ответ

2

JFrame не нужно, чтобы получить позицию мыши, вы можете использовать MouseInfo

PointerInfo pointerInfo = MouseInfo.getPointerInfo(); 
Point point = pointerInfo.getLocation(); 

System.out.println(point.getX()); //Prints the mouse's X position 
System.out.println(point.getY()); //Prints the mouse's Y position 

Позиции относятся к экрану (Верхний левый угол все равно 0, 0).

Если вы хотите, чтобы позиция по отношению к одному из ваших компонентов, вы можете вычесть на yourComponent.getLocationOnScreen()

+0

Я бы сделал все это внутри моего прослушиваемого мышью слушателя правильно? – Bcmonks

+0

Да. MouseInfo.getPointerInfo() - статический метод, поэтому его можно вызывать из любого места. Поместите его везде, где вы хотите знать положение мыши. – Caelum

+0

Позиция работает для меня, но я могу только щелкнуть внутри того, что я тоже установил (JMenu, JPanel и т. Д.). Как настроить его так, чтобы я мог щелкнуть за пределами моего окна? – Bcmonks

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