2012-05-02 43 views
1

我试图使用OverlayLayout放置一小段文本与JTabbedPane的顶部选项卡一致,但它似乎不工作。OverlayLayout似乎没有分层

作为一个说明,我使用的是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

*“任何建议,将不胜感激。” *对于被尽快提供帮助,发布[SSCCE](http://sscce.org/)。 –

+0

*“试图使用OverlayLayout放置一小段文本与JTabbedPane的顶部标签一致”*为什么?什么是文字?它与标签有什么关系? –

+0

我会修改我的问题。谢谢。 Lead选项卡是一个图形,文本是为了显示当前的鼠标坐标或可能的其他相关信息。客户要求它在那里(它看起来不错) – cmjreyes

回答

1

如果你想真正创建一个覆盖另一个你看看

  • 的JLayeredPane JComponents - >过时,你只能使用最多6.th LayeredPanes

  • JXLayer为的Java6或直接实现如JLayer在Java7

  • 简单叠加就可以使用玻璃面板也

+0

从以前的实验中汲取了setBounds()调用。删除它。我不完全确定setMaximumSize如何帮助解决OverlayLayout问题。问题是这些组件看起来像是在使用普通的布局管理器(它们不是分层叠加)。我会调查其他建议。谢谢。 – cmjreyes

+0

您可以在_A视觉指南中看到布局管理器_ http://docs.oracle.com/javase/tutorial/uiswing/layout/visual.html –