【问题标题】:Java Swing FlowLayout AlignmentsJava Swing FlowLayout 对齐方式
【发布时间】:2012-03-22 03:00:08
【问题描述】:

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

 button.setHorizontalAlignment(JButton.RIGHT);

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

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

提前致谢。

【问题讨论】:

  • +1 个不错的问题,因为 Swing 最好使用 SSCCE 发布问题

标签: java swing user-interface alignment flowlayout


【解决方案1】:

见构造函数FlowLayout(int align)

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

您似乎正在寻找FlowLayout.RIGHT 中的this answer(顶部的组合和复选框)。

【讨论】:

  • 是的,这行得通。我显然需要使用其他类型的布局来获得更好的对齐,但这很好用。谢谢。
  • 然后我会选择像上面那样的嵌套布局。尽管除了流布局之外唯一的对齐方式是图像在GridBagLayout 中的居中。后者不是在构造函数中实现的,而是通过在添加图像时使用布局约束(或者更确切地说,忽略使用一个)。
  • @AndrewThompson :当我写这个JPanel plafComponents = new JPanel(new FlowLayout(FlowLayout.RIGHT, 3,3)); 时,它给了我一个错误,说找不到符号、VARIABLE Right 或我使用的任何东西。我的 JDK 有问题吗?不过,我可以使用普通的 FlowLayout 构造函数。希望你能告诉我我到底有什么问题?或者我应该为此开始一个新线程吗?
【解决方案2】:

setHorizontalAlignment of AbstractButton 设置 icontext 的水平对齐方式,而不是按钮的位置。 AbstractButton 的默认值为 SwingConstants.CENTER。

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

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

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

【讨论】:

  • 我认为这行不通。我试过了,但没有任何改变。它确实说第二个参数用于位置,但由于某种原因它没有改变任何东西。
【解决方案3】:

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

我的建议是:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-10-21
    • 2016-04-19
    • 1970-01-01
    • 2013-05-26
    • 1970-01-01
    • 1970-01-01
    • 2021-06-21
    • 2011-07-08
    相关资源
    最近更新 更多