【问题标题】:Expandable panel with layering具有分层功能的可扩展面板
【发布时间】:2014-01-26 21:45:10
【问题描述】:

我试图让两个JPanels 相互叠加,但同时展开以适应其父级的大小。例如,如果展开包含两个分层的JPanels 的JFrame,分层的JPanels 也会展开以填充整个JFrame,反之亦然,当JFrame 折叠时。

这个想法是创建一个顶层,其中包含按钮和其他控制底层的 Swing 组件,但是仍然可以通过顶层看到底层(通过将顶层的属性设置为setOpaque(false))。同时,顶层和底层都应填充其容器的可用大小(包含层的JPanelJFrame)。

我已经尝试过使用JLayeredPane,但必须事先知道窗格的大小(到目前为止,我已经能够让它工作)。这些大小限制将随着包含 JPanelJFrame 的大小的变化而变化。

非常感谢您的帮助。

【问题讨论】:

    标签: java swing user-interface jpanel jlayeredpane


    【解决方案1】:

    你可以...

    您尝试使用OverlayLayout,但我不确定它是否符合您的要求。

    你可以

    JLayeredPane上设置使用GridBagLayout,将每个组件放置在相同的gridx/gridy,然后用GridBagConstraints.BOTHweightx/1weighty填充

    你可以

    使用框架的“玻璃窗格”作为顶层。这将允许您将控件放在框架的“内容窗格”的顶部

    更多详情请见How to use root panes

    【讨论】:

    • 你的第二个“你可以”与stackoverflow.com/a/11197851/2403253结合使用。在添加组件之前使用setLayer(...) 很重要(如我链接到的问题所示)。非常感谢。非常感谢您的帮助!
    • @unseenghost 就我个人而言,我喜欢第三个,POV 的麻烦更少,但是什么都行;)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-09-20
    • 1970-01-01
    • 1970-01-01
    • 2021-09-17
    • 1970-01-01
    • 2013-08-18
    • 2015-03-06
    相关资源
    最近更新 更多