摆动:适合简单情况的布局经理?

时间:2010-02-12 16:44:10

标签: swing layout

我想要使用JPanel来包含3个垂直组件:

  1. a JLabel
  2. a JTextField
  3. a JScrollPane
  4. 我希望所有3个组件都填充JPanel的宽度。我希望JLabelJTextField使用正常的高度,JScrollPane使用其余的高度。

    BoxLayout几乎可以正常工作,但JTextFieldJScrollPaneJPanel变大时似乎共享“额外”空间。

    我该怎么办?

3 个答案:

答案 0 :(得分:2)

创建BorderLayout。将JScrollPane放在其中心。

使用BoxLayout创建JPanel。将JLabel和JTextField垂直放入其中。把那个JPanel放到BorderLayout的NORTH侧。

答案 1 :(得分:1)

GridBagLayout非常方便。你可以控制你需要的任何东西,你只能控制你需要的东西。您可能只对垂直参数感兴趣。

答案 2 :(得分:1)

您还可以使用DesignGridLayout,如下所示:

DesignGridLayout layout = new DesignGridLayout(thePanel);
layout.row().center().fill().add(theLabel);
layout.row().center().fill().add(theTextField);
layout.row().center().fill().add(theScrollPane);

这应该与你描述的一模一样。

每次调用row()都会在面板中创建一个新行。

对fill()的调用确保每个组件使用整个可用宽度。

这里使用DesignGridLayout的一些优点是:

  • 整个只有一个LayoutManager 面板
  • 自动边框和行间距