Я пишу приложение Java (Swing GUI) что периодически выскакивает JFrame.
Можно ли каким-то образом переместить окно на передний план (foo.setAlwaysOnTop (true) было бы еще лучше), но без его фокусировки?
Некоторые люди отводят глаза от экрана с время от времени смотреть на клавиатуру во время набора текста, и я уверен, что, если бы это окно всегда фиксировало фокус клавиатуры, люди были бы очень раздражены, поскольку из-за этого они теряли довольно много нажатий клавиш каждый раз, когда оно появлялось незамеченным.
В других случаях, даже когда пользователь действительно может печатать, не глядя на клавиатуру все время, всплывающее окно и получение фокуса может вызвать нежелательные действия из самого всплывающего окна (некоторые Tab
+ Введите комбинацию
, например, когда пользователь случайно выбирает вариант, который в противном случае не выбрал бы).
Заранее спасибо!
Обновление
Как предлагает Джонас, 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);
при необходимости.
Считаю свою проблему решенной.