Перекрытие компонентов в JLayeredPane - PullRequest
1 голос
/ 08 июля 2011

Я добавил два компонента в JLayeredPane.1. JWebBrowser2. JPanel

Я добавил JWebBrowser и JPanel в разных слоях.JWebBrowser имеет значение 0, то есть нижний слой, а JPanel находится на 1-м уровне.

m_LayeredPane.setLayer(m_WebBrowser, JLayeredPane.DEFAULT_LAYER);
m_LayeredPane.add(m_WebBrowser);
m_LayeredPane.setLayer(m_WebCamPane, JLayeredPane.PALETTE_LAYER);
m_LayeredPane.add(m_WebCamPane);

Теперь проблема заключается в том, что слой JWebBrowser перекрывает слой JPanel.

Я пробовал разные вещи, такие как метод moveToFront (), определение позиции во время выполнения, помещение обоих компонентов в один слой и использование componentZorder и т. д., но проблема все та же.

Я не уверен, что заставляет слой JPanel возвращаться из слоя JWebBrowser.

Ответы [ 2 ]

6 голосов
/ 08 июля 2011

Бьюсь об заклад, что, хотя JWebBrowser в конечном итоге происходит от JPanel, он ведет себя как тяжелый компонент с некоторыми нативными компонентами.В этом случае существуют ограничения в том, что вы можете сделать, и вы можете прочитать больше о смешивании тяжелых и легких компонентов в приложении Swing: Смешивание тяжелых и легких компонентов

2 голосов
/ 01 сентября 2011

Если веб-браузер создается без каких-либо определенных параметров, он ведет себя как компонент с большим весом.Но если он создан с определенными параметрами, он может лучше смешиваться.Например: новый JWebBrowser (JWebBrowser.constrainVisibility ());

Посмотрите демонстрационное приложение, чтобы увидеть все виды случаев интеграции и, в частности, раздел дополнительных функций.

...