2
我正在试用JLayeredPane。因此,在下面的代码中,我创建了一个JLayeredPane
和一个JLabel
。我将标签添加到分层窗格,我将其添加到JPanel
。这个面板然后被添加到一个JFrame。现在获取Swing组件的合适尺寸
public static void main(String[] args) {
frame = new JFrame("LayeredPane Example");
frame.setPreferredSize(new Dimension(500,500));
layeredPane = new JLayeredPane();
layeredPane.setPreferredSize(new Dimension(400, 400));
JLabel label = new JLabel("Label on LayeredPane");
label.setLocation(200, 200);
System.out.println("Width " + label.getWidth());
label.setBounds(20, 20, 400, 40);
layeredPane.add(label);
layeredPane.setLayer(label, 10, 1);
frame.setLayout(new BorderLayout());
JPanel panel = new JPanel();
panel.add(layeredPane);
frame.add(panel);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.pack();
frame.setVisible(true);
}
的问题是,如果我没有在声明label.setBounds(20, 20, 400, 40);
,则标签不会出现在分层窗格。这引出了两个问题:
- 为什么
setBounds
如此重要? - 可能是我以前的问题的一部分回答,标签在设置边界之前的初始高度和宽度为,这可能是因为
setBounds
很重要。在这种情况下,我想知道当我将它添加到JLayeredPane
中时,如何确定Swing组件的适当边界。 (如果我的范围是小于组件的适当大小,组件会出现隐藏)
编辑: 的第一个问题是在更详细here早些时候回答。