5

我对 Java 还很陌生,我正在尝试创建一个带有一些标签、按钮和文本字段的 GUI 应用程序。该程序非常简单,我只想使用默认布局,即 FlowLayout。我设法将所有东西都很好地放置和调整大小,但唯一似乎不起作用的是对齐。我想放置具有某些对齐方式的按钮和文本字段,但是每当我设置对齐方式时,它会将文本移动到对象内部而不是对象本身。例如,我写道:

 button.setHorizontalAlignment(JButton.RIGHT);

但似乎它对齐按钮内的文本而不是按钮本身。有什么方法可以对齐按钮本身而不是其中的文本?

我知道使用其他类型的布局(例如 BoxLayout)可能会更容易对齐,但我只想为此使用 FlowLayout,除非无法使用 FlowLayout 对齐它们(我不这么认为) .

提前致谢。

4

3 回答 3

14

请参阅构造函数FlowLayout(int align)

FlowLayout使用指定的对齐方式和默认的 5 个单位的水平和垂直间隙构造一个新的。对齐参数的值必须是FlowLayout.LEFTFlowLayout.RIGHTFlowLayout.CENTERFlowLayout.LEADING或之一FlowLayout.TRAILING

似乎您正在寻找此答案FlowLayout.RIGHT中所见的a (顶部的组合和复选框)。

于 2012-03-04T07:52:26.487 回答
2

setHorizontalAlignmentof设置图标文本AbstractButton的水平对齐方式,而不是按钮的位置。AbstractButton 的默认值为 SwingConstants.CENTER。

如果要对齐按钮..在将其添加到面板或框架时设置位置..像这样....

p.add(button, BorderLayout.SOUTH);//using `BorderLayout`

流布局通常用于在面板中排列按钮。它将从左到右排列按钮,直到没有更多按钮适合同一行。

于 2012-03-04T07:26:35.390 回答
2

我不认为你可以单独使用 FlowLayout 来做到这一点。

我的建议是:

  • 考虑切换到MigLayout,这是一种更强大的布局机制。MigLayout 基本上可以让您在灵活的网格中定位组件,并且您可以在每个网格单元中设置组件的特定对齐方式。
  • 当您想要对齐子组件时,将它们放在嵌套的 JPanel 中通常也很有意义。然后,您可以为此 JPanel 使用单独的布局(也许是 BorderLayout?),这将使您能够获得所需的精确对齐。
于 2012-03-04T07:27:42.797 回答