JAVA我们可以用BorderLayout在JPanel中重叠南北对象吗?

JAVA我们可以用BorderLayout在JPanel中重叠南北对象吗?,java,jpanel,jtabbedpane,overlapping,jlayeredpane,Java,Jpanel,Jtabbedpane,Overlapping,Jlayeredpane,我有JTabbedPane,它的一个选项卡包含JPanel和BorderLayout(一个JPanel位于北部,用于itmes之类的菜单,相当窄的高度为cca.50px+一个JPanel,其中一个JPanel位于南部,用于比较高的内容) 当我点击我想要的北部顶部的一个类似菜单的项目时,它会打开一个类似子菜单的容器/窗口,该容器/窗口将在南部“内容”部分上方向下重叠-可以这样做吗?如果可以,那么如何做 我尝试过的每一件事都是在南部开始的地方进行裁剪,或者它更新了错误的北部高度(即:不是我想要的)-

我有JTabbedPane,它的一个选项卡包含JPanel和BorderLayout(一个JPanel位于北部,用于itmes之类的菜单,相当窄的高度为cca.50px+一个JPanel,其中一个JPanel位于南部,用于比较高的内容)

当我点击我想要的北部顶部的一个类似菜单的项目时,它会打开一个类似子菜单的容器/窗口,该容器/窗口将在南部“内容”部分上方向下重叠-可以这样做吗?如果可以,那么如何做

我尝试过的每一件事都是在南部开始的地方进行裁剪,或者它更新了错误的北部高度(即:不是我想要的)-北部高度必须保持不变

我正在考虑将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);

为什么不在你的北方菜单上使用JMenuBar呢?这将在南部或其他组件上方显示JMenus和JMenus项。否则,显示一个弹出菜单,在gui上显示您的选项(这就是JMenu为您所做的)@HovercraftFullOfEels是的,我知道,但它不是实际的菜单,因此我写了“菜单式”:特别排列的基于大图像的按钮,这就是我没有使用JMenu的原因(另一方面,我在主框架的顶部使用了JMenu,它有理由支持我)您仍然需要弹出您的显示器。您可以使用非装饰性对话框,您可以使用玻璃窗格,或者您可以使用JLayeredPane,您选择的用于JPanel的玻璃窗格?我以为它仅用于JFrame?除此之外,我需要弹出窗口不能用鼠标移动-它必须粘贴在“类似菜单的按钮”旁边它是从我的北部部分生成的+我不能在JTabbedPane中使用JLayeredPane,至少我被告知……你是对的——一个JPanel没有玻璃窗格,但是任何带有JRootPane的顶级容器都有,比如JFrame、JDialog等等,这些都可以通过使用适当的Swinguitilities m从JPanel访问方法。JFrame实际上使用了一种JLayeredPane类型的方法来构建其组件。您可以使组件可移动或不可移动。所有这些都是您编写代码的方式。