JAVA我们可以使用BorderLayout在JPanel中重叠NORTH和SOUTH之间的对象吗?

问题描述 投票:-1回答:1

我有一个JTabbedPane,它的一个选项卡包含带有BorderLayout的JPanel(一个JPanel在NORTH中用于菜单式的itmes,相当窄的cca高度.50px +一个JPanel,它在南方为JScrollPane提供了相当高的内容)。

当我点击顶部NORTH部分中的一个类似菜单的项目时,我希望它打开一个类似子菜单的容器/窗口,它将在SOUTH“内容”部分上方向下重叠 - 是否可以完成,如果是,那么如何至?

我试过的所有东西仍然会在南部开始的地方进行切割,或者更新北部高度这是错误的(即:不是我想要的) - 北部高度必须保持不变。

我正在考虑将JPanel更改为JLayeredPane,这将使我能够重叠我的对象(JPanels),直到我被告知无法将JLayeredPane添加到JTabbedPane中。

或者我应该将我的布局从BorderLayout更改为其他内容?我试图将它设置为null并简单地手动放置所有内容,但这完全破坏了设计,所以我立即废弃了它。

java jpanel jtabbedpane overlapping jlayeredpane
1个回答
0
投票

所以,经过@HovercraftFullOfEels的建议(谢谢!)尝试使用GlassPane我玩了一点,这基本上就是它,只是有问题的解决方案:

// MAIN_WINDOW = my main JFrame
// SUBMENU = my pseudo submenu that overlaps on top of everything else
// ADDOBJECTS = actual JPanel with submenu-like buttons, positioned manually
// this is called from a "main" menu-like button
JPanel SUBMENU = (JPanel) MAIN_WINDOW.getGlassPane();
SUBMENU.setLayout(null);
SUBMENU.add(ADDOBJECTS);
SUBMENU.setVisible(true);
© www.soinside.com 2019 - 2024. All rights reserved.