Можно ли вывести JFrame на передний план, но НЕ в фокусе?

Я пишу приложение 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); при необходимости.

Считаю свою проблему решенной.

14
задан JasonMArcher 7 February 2018 в 01:30
поделиться