Java Swing FlowLayout对齐

时间:2012-03-04 07:14:53

标签: java swing user-interface alignment flowlayout

我是Java的新手,我正在尝试使用一些标签,按钮和文本字段创建一个GUI应用程序。该程序非常简单,我只想使用默认布局,即FlowLayout。我设法将一切都放好并且尺寸合适,但唯一似乎不起作用的是对齐。我想放置具有某些对齐的按钮和文本字段,但每当我设置对齐时,它都会将文本移动到对象内部而不是对象本身。例如,我写道:

 button.setHorizontalAlignment(JButton.RIGHT);

但它似乎与按钮内的文本对齐而不是按钮本身。 有没有办法对齐按钮本身而不是内部的文本?

我知道使用其他类型的布局(例如BoxLayout)可以更容易地对齐东西,但我只想使用FlowLayout来实现这一点,除非使用FlowLayout无法对齐它们(我不会也这样觉得)。

提前致谢。

3 个答案:

答案 0 :(得分:13)

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

  

构造一个具有指定路线的新FlowLayout和一个默认的5单位水平和垂直间隙。 alignment参数的值必须是FlowLayout.LEFTFlowLayout.RIGHTFlowLayout.CENTERFlowLayout.LEADINGFlowLayout.TRAILING之一。

好像你正在追踪this answer {{3}}中的FlowLayout.RIGHT(顶部的组合和复选框)。

答案 1 :(得分:2)

setHorizontalAlignment的{​​{1}}设置图标文字的水平对齐方式,而不是按钮的位置。 AbstractButton的默认值是SwingConstants.CENTER。

如果您想对齐按钮,请在将其添加到面板或框架时设置位置..这样的事情......

AbstractButton

流布局通常用于排列面板中的按钮。它会从左到右排列按钮,直到不再有按钮放在同一条线上。

答案 2 :(得分:2)

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

我的建议是:

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