JInternalFrame вперед и сосредоточены - PullRequest
2 голосов
/ 02 декабря 2010

Как можно нажать JInternalFrame на вершину всех фреймов в JDesktopPane?

Ответы [ 6 ]

3 голосов
/ 02 декабря 2010

попробуйте grabFocus () и requestFocus ().Один из должен работать.Я лично использовал только requestFocus ().

2 голосов
/ 09 июля 2011

ОП отметил, что setSelected не работал, и ему нужно было вызвать activateFrame вручную.Это похоже на проблему, с которой я столкнулся с GTKLookAndFeel.У меня было приложение, которое было настроено на использование setSelected, чтобы в конечном итоге вызвать activateFrame.Работал нормально с Windows и Mac родной внешний вид;activateFrame будет вызываться автоматически.

В Ubuntu система выбрала LaF GTKLookAndFeel, и по какой-то причине это не вызывало activateFrame.Похоже, что setSelected не выдавал ошибку или что-то в этом роде, просто не удосужился вызвать activateFrame, как это делают другие LaF.Я думаю, что это проблема совместимости GTKLookAndFeel.

В конце концов, я наказал это и просто запретил GTKLookAndFeel, заменив его на Metal.Motif также имел совместимое поведение (но это так уродливо ...).Код выглядит примерно так:

UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
if (UIManager.getLookAndFeel() instanceof com.sun.java.swing.plaf.gtk.GTKLookAndFeel)
    UIManager.setLookAndFeel(UIManager.getCrossPlatformLookAndFeelClassName());
2 голосов
/ 02 декабря 2010

В этом примере , javax.swing.Action используется для выбора кадров из меню.

2 голосов
/ 02 декабря 2010

Прочитайте JInternalFrame API и перейдите по ссылке на учебник Swing по «Как использовать внутренние рамки», где вы найдете рабочий пример того, как «выбрать» активную внутреннюю рамку.

1 голос
/ 28 марта 2011

Закрытие модального JInternalFrame см. сообщение г-на Zen (меня)

1 голос
/ 06 декабря 2010

/ * сделать текущий JInternalFrame отмененным, вызвав метод JInternalFrame setSelected (false)

* / затем выбрать новый JInternalFrame с помощью того же метода;т.е. setSelected (true)

пример кода:

try {jframe1.setSelected (false);jframe2.setSelected (истина);} catch (PropertyVetoException ex) {}

...