调整摆动组件的位置

时间:2009-07-15 05:21:25

标签: java swing

我有一个JFrame,我必须插入JLabel,textfields和JButton。我能够这些,但我怎么能将它们调整到所需的位置,我想在一行中添加一个标签和文本字段,然后在下一行添加nxt标签和文本字段,但它们将在同一水平线中。我已经将flowLayout与JFrame一起使用了。请告诉我如何相应地调整它们。感谢

6 个答案:

答案 0 :(得分:4)

在Swing中在Container中分发组件的关键是Layout Manager。那里有各种类型。要做你想要的,你可能想要考虑GridLayout。它很容易设置。首先需要创建布局。以下将创建一个两列圆柱布局,其中包含您提供的行数:

GridLayout gl = new GridLayout(0,2);

然后将其应用于您的面板:

JPanel panel = new JPanel(gl);

然后你添加你的物品:

panel.add(textfield1);
panel.add(button1);
panel.add(textfield2);
panel.add(button2);

在使用组件填充列之后,GridLayout将处理从一行到另一行的移动。

答案 1 :(得分:0)

看了gridbaglayout?应该为你的目的服务。

答案 2 :(得分:0)

GridLayout可能是您想要的,也可能是GridLayout和FlowLayout的组合。查看LayoutManager tutorial以更好地了解何时以及如何使用和组合各种布局管理器。

答案 3 :(得分:0)

你需要研究swing提供的各种类型的布局。 您也可以查看JGoodies提供的FormLayout。我更喜欢使用这个而不是摆动布局,因为我觉得它很容易编码,代码更少

答案 4 :(得分:0)

您正在使用默认的Swing布局管理器。如果您想要不同的行为(这是非常合理的),那么您需要使用另一个LayoutManager。 Sun和“那里”都有几个存在。

为了让您能够选择,您需要知道它们的工作原理。我强烈建议您使用Java Tutorial:

http://java.sun.com/docs/books/tutorial/uiswing/layout/using.html

如果您需要的数量超过例如嵌套的BorderLayout或TableLayout。

答案 5 :(得分:0)

如果您希望能够(几乎)绝对地在应用程序中定位UI元素,请考虑在NetBeans中使用像Matisse这样的体面GUI构建器,或者在IntelliJ IDEA中使用Swing UI Designer