使用FlowLayout定位子面板

时间:2010-03-29 17:38:42

标签: java swing

我有两个小组:

  • main_panel
  • child_panel

main_panel布局使用:

设置
main_panel.setLayout(flowlayout)

然后我将child_panel添加到main_panel

main_panel.add(child_panel)

child_panel被添加到main_panel,但其位置位于屏幕的水平中点和顶部垂直部分的横截面处。我希望child_panel位于左上角,如果我已将child_panel.setlocation(a,b)的布局设置为main_panel,我可以使用null方法完成此操作。

我在这里使用了FlowLayout,因为我希望保留JPanel中的组件 调整大小为JFrame

即使我将child_panel的{​​{1}}设置为main_panel,我也可以在Layout的{​​{1}}处添加main_panel吗? / p>

3 个答案:

答案 0 :(得分:1)

这个怎么样?

import java.awt.FlowLayout;

import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;

public class Test {
    public static void main(String[] args) {
        JFrame f = new JFrame("Test");
        JPanel main = new JPanel(new FlowLayout(FlowLayout.LEFT));
        JPanel child = new JPanel();
        child.add(new JLabel("Label"));
        main.add(child);
        f.getContentPane().add(main);
        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        f.pack();
        f.setVisible(true);
    }

}

答案 1 :(得分:1)

我建议您使用GridPanelLayout - 您可以将元素设置为网格位置(0,0)并将其设置为填充水平和垂直,这将使其按大小缩放。然后,您可以按照外观指导来获得适当的边距等。

答案 2 :(得分:0)

在这种情况下,我会使用SpringLayout,它使您能够准确地将面板的两侧(NORTH,SOUTH,WEST,EAST)与任何其他组件的侧面放置(在您的情况下是主面板)

This tutorial会澄清我在说什么