我在JLayeredPane中有两个不同z-order的JPanel实例。我希望我的两个孩子JPanels总是填充LayeredPane的空间。
我的想法是让第二个面板的显示在第一个面板的顶部切换,以显示类似模态的对话框。是的,我可以使用JDialog,但我认为尝试创建覆盖JPanel的透明度超过一个很好的效果会很有趣。
我发现在JLayeredPane上使用布局管理器,比如BorderLayout,并尝试将两个子设置为CENTER冲突,因为两个面板都不在中心。
我有没有看到的伎俩?
答案 0 :(得分:1)
答案 1 :(得分:1)
有两种方法可以为JPanel
的{{1}}创建一些类似于“玻璃面板”的叠层:
JLayeredPane
的大小更改时,将ComponentListener
添加到JLayeredPane
并更新所有子组件的大小JLayeredPane
,它将其子FillLayout
的大小扩展到布局Component
(在我们的情况下为Container
)的大小。您需要保留孩子JLayeredPane
的列表。在Component
期间,您将layoutContainer
的尺寸复制到这些子Container
中。我写了它,它真的很简单,但不幸的是我不能发布,因为它是公司的。但是,如果有人感兴趣,请在评论中提问。该实施基本上由一线组成。对于两种解决方案,您都需要通过将Component
设置为setOpaque
来确保顶部的面板是透明的。这样可以确保基础面板呈现其内容。