1

我正在尝试使用 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);

    }
}

任何建议,将不胜感激。

4

2 回答 2

5

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

于 2012-05-02T17:34:16.587 回答
2

如果您想真正创建覆盖另一个的 JComponents,您可以查看

  • JLayeredPane --> 已过时,您最多只能使用 6.th LayeredPanes

  • JXLayer for Java6 或直接实现为 Java7 中的 JLayer

  • 对于简单的叠加,您也可以使用 GlassPane,

于 2012-05-02T17:53:34.023 回答