我正在尝试使用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);
}
}
任何建议都将不胜感激。
答案 0 :(得分:4)
您可以使用方法setGlassPane
将窗格放在框架中的其他窗格上。签入http://docs.oracle.com/javase/tutorial/uiswing/components/rootpane.html
答案 1 :(得分:1)
错误是使用setBound(),这对于此LayoutManager来说是无用的和反作用的
使用implemented methods in the API关于setMaximumSize()
如果你想真正创建覆盖另一个你看过的
的JComponentsJLayeredPane - >过时,您最多只能使用6.th LayeredPanes
JXLayer for Java6或直接实现为Java7中的JLayer
对于简单叠加,您也可以使用GlassPane,