Когда setAlwaysOnTop не работает, как отслеживать и переключаться на дочерние окна? - PullRequest
0 голосов
/ 17 февраля 2019

У меня есть Java-приложение - оно импортирует как AWT, так и Swing - которое заполняет весь экран без «украшения», поэтому его не нужно минимизировать.В какой-то момент ему нужно отобразить файл справки для пользователя.Он должен блокироваться, пока пользователь не закроет окно.Итак, вот код:

fileview dlg = new fileview(this, title, filename, "");
dlg.setModal(true); //Makes it UI blocking!
dlg.setResizable(false);
dlg.setAlwaysOnTop(true);
dlg.setVisible(true);

fileview расширяется JDialog, поэтому он становится независимым окном, за исключением того, что он закрывается, когда родитель делает.

К сожалению, яобнаружил, что на некоторых платформах он чтит setAlwaysOnTop(true), а иногда нет.Когда не работает, если пользователь «щелкает», фокус ввода смещается обратно к родителю, но из-за setModal(true) он зависает.

К сожалению, я потратил впустую НЕДЕЛЮ на этом, и я 'Мне не хватает времени, чтобы все заработало, и у меня еще много работы, поэтому Я бросил тратить свое время, пытаясь выяснить, ПОЧЕМУ setAlwaysOnTop не работает. (я читалКак я и сдаюсь, смешение AWT и Swing может иметь к этому какое-то отношение, но поскольку Swing построен поверх AWT, ИДК, что думать.)

Вместо этого я хотел бы НЕ setModal и просто отслеживать созданного потомка, а затем переключать фокус ввода обратно на него, когда подходит время, вместо создания большого количества потерянных потомков.

Итак, я попытался сохранить fileview, и я могу применить к нему методы, но я не знаю, какой из них вызывать, чтобы он появлялся поверх текущего окна и принимал фокус ввода.Я пробовал .setVisible(true) и .setAlwaysOnTop(true) (в надежде, что это хоть на мгновение делает это правдой!) Безрезультатно.... Я просмотрел все унаследованные классы, о которых мог подумать, что может иметь правильный метод, но не увидел его; Какие методы я должен применять?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...