Я пишу Java-приложение (Swing GUI), которое периодически выдает JFrame.
Возможно ли как-то вывести окно на передний план (foo.setAlwaysOnTop (true) было бы еще лучше), но без с фокусировкой?
Некоторые люди время от времени отводят глаза от экрана, чтобы посмотреть на клавиатуру во время набора текста, и я уверен, что если это окно всегда будет захватыватьлюди, которые фокусируются на клавиатуре, очень раздражаются, потому что они теряют довольно много нажатий клавиш каждый раз, когда они появляются незаметно.
В других случаях, даже когда пользователь действительно способен печатать, не глядя на клавиатуру всевремя, когда всплывающее окно и фокусировка могут вызвать нежелательные действия из самого всплывающего окна (например, некоторая комбинация Tab
+ Enter
, когда пользователь случайно выбирает вариант, который он действительно не выбрал бы в противном случае)).
Заранее спасибо!
Обновление
Как предполагает Джонас, foo.setFocusableWindowState(false);
кажетсяработать, если вызывается после отображения окна (проверено только на Gnome).
Это не работает:
foo.setFocusableWindowState(false);
foo.setVisible(true);
foo.setFocusableWindowState(true);
Однако это делает :
foo.setFocusableWindowState(false);
foo.setVisible(true);
Thread.sleep(1000);
foo.setFocusableWindowState(true);
Мне нужно посмотреть, есть ли событие, которое я могу поймать / прослушать, которое позволяет мне делать foo.setFocusableWindowStatue(true);
, когда это уместно.
Я считаю, что моя проблема решена.