JAVA JPanel 中 NORTH 和 SOUTH 之间的对象是否可以通过 BorderLayout 重叠?
JAVA Can we overlap objects between NORTH and SOUTH in JPanel with BorderLayout?
我有 JTabbedPane,其中一个选项卡包含 JPanel with BorderLayout(NORTH 的一个 JPanel 用于类似菜单的 itmes,非常窄cca. 50px 的高度 + 一个 JPanel,它在南面包含 JScrollPane 的内容相当高)。
当我单击顶部 NORTH 部分中的一个类似菜单的项目时,我希望它会打开一个 类似子菜单的 container/window,它会向下重叠在 SOUTH "content" 部分 - 可以做到吗?如果可以的话,怎么做?
我尝试过的所有方法仍然使它在南部分开始的地方被切断,或者它更新了错误的北高度(即:不是我想要的)- 北高度必须保持不变。
我正在考虑将 JPanel 更改为 JLayeredPane,这将使我能够重叠我的对象 (JPanel),直到我被告知不能将 JLayeredPane 添加到 JTabbedPane 中。
或者我应该将布局从 BorderLayout 更改为其他布局吗?我试图将它设置为 null 并简单地手动放置所有内容,但这完全破坏了设计,所以我立即放弃了它。
因此,在@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);
我有 JTabbedPane,其中一个选项卡包含 JPanel with BorderLayout(NORTH 的一个 JPanel 用于类似菜单的 itmes,非常窄cca. 50px 的高度 + 一个 JPanel,它在南面包含 JScrollPane 的内容相当高)。
当我单击顶部 NORTH 部分中的一个类似菜单的项目时,我希望它会打开一个 类似子菜单的 container/window,它会向下重叠在 SOUTH "content" 部分 - 可以做到吗?如果可以的话,怎么做?
我尝试过的所有方法仍然使它在南部分开始的地方被切断,或者它更新了错误的北高度(即:不是我想要的)- 北高度必须保持不变。
我正在考虑将 JPanel 更改为 JLayeredPane,这将使我能够重叠我的对象 (JPanel),直到我被告知不能将 JLayeredPane 添加到 JTabbedPane 中。
或者我应该将布局从 BorderLayout 更改为其他布局吗?我试图将它设置为 null 并简单地手动放置所有内容,但这完全破坏了设计,所以我立即放弃了它。
因此,在@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);