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