Я хотел бы активировать приложение Swing программно. Я хочу сказать, что я хотел бы написать код, который заставит JFrame
быть видимым и сфокусированным (заголовок окна должен быть выделен). Я попытался использовать requestFocus()
. Он работает только в том случае, если приложение имеет не менее 2 окон A и B: A скрыто, B видно. Теперь, если я звоню A.requestFocus()
, он становится активным, как я хочу. Этого не происходит, если приложение имеет только одно окно или если оба окна невидимы.Как активировать окно в Java?
Я нашел 2 обходных решения.
- использование поддельные прозрачные неэкранированные рамки, которые всегда сверху. Это поддельное окно будет играть роль окна B. Я не пытался его реализовать, но кажется, что он должен работать.
- звонок
A.setAlwaysOnTop(true)
. Это приносит окно A поверх других окон. Но это еще не в фокусе. Используйтеjava.awt.Robot
(mouseMove, mousePress, mouseRelease), чтобы сделать щелчок по заголовку окна A. Теперь вызовитеA.setAlwaysOnTop(false)
и верните указатель мыши обратно в предыдущее положение. Я реализовал код, и он работает, но он выглядит как уродливое обходное решение.
Есть ли «правильное» решение?
Насколько я могу сказать, что нет 'метода Frame.setSelected' –
это в JInternalFrame –
Да, setSelected() умирает не существует до сих пор ... – AlexR