OverlayLayout似乎没有分层

cmj*_*yes 1 java layout swing overlay

我正在尝试使用OverlayLayout将一小部分文本与JTabbedPane的顶部选项卡对齐,但是似乎不起作用。

值得注意的是,我使用的是JLayeredPane,但是我需要TabbedPane来填充父组件,并且看起来如果不进行一些修改,它似乎将无法工作。

无论如何,当您不理会路线时,行为似乎可以按预期进行(按钮浮在背景上)。但是,当使用任何类型的对齐方式时(据我了解,这就是您使用此布局管理器设置位置的方式),它将使背景缩小到按钮应位于的边缘。

这是一些示例代码。

import java.awt.Color;
import java.awt.Container;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.OverlayLayout;

public class Test {
    public static void main(String[] args) {
        JFrame frame = new JFrame();
        Container c = frame.getContentPane();
        c.setLayout(new OverlayLayout(c));

        JButton button = new JButton("Test");
        JPanel background = new JPanel();
        background.setBackground(Color.BLUE);
        background.setSize(500, 500);
        // toggle the following between 0 and 100 to see the described behavior
        background.setAlignmentX(100);

        frame.add(background);
        frame.add(button);

        frame.pack();
        frame.setSize(800, 800);
        frame.setVisible(true);

    }
}
Run Code Online (Sandbox Code Playgroud)

任何建议,将不胜感激。

Pau*_*gas 5

您可以使用该方法setGlassPane将窗格放在框架中的其他窗格之上。签入http://docs.oracle.com/javase/tutorial/uiswing/components/rootpane.html