Я пишу 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);
, когда это необходимо.
Я считаю, что моя проблема решена.: -)