如何在 JPanel 中将所有元素左对齐?

Posted

技术标签:

【中文标题】如何在 JPanel 中将所有元素左对齐?【英文标题】:How can I align all elements to the left in JPanel? 【发布时间】:2011-02-12 11:13:09 【问题描述】:

我想让 JPanel 中的所有元素都向左对齐。我尝试通过以下方式进行:

JPanel panel = new JPanel();
panel.setLayout(new BoxLayout(panel, BoxLayout.Y_AXIS));
panel.setAlignmentX(Component.LEFT_ALIGNMENT);

因此 Java 使用所有元素的左侧作为元素的位置,然后将所有元素放在 JPanel 的中心(不是左侧)。

【问题讨论】:

【参考方案1】:

我发现将对象放在左侧的最简单方法是使用 FlowLayout。

JPanel panel = new JPanel(new FlowLayout(FlowLayout.LEFT));

将组件正常添加到此面板会将其放置在左侧

【讨论】:

+1 对我来说,演员是必要的:JPanel panel = new JPanel((LayoutManager) new FlowLayout(FlowLayout.LEFT)); @theUg 如果您在过去 6 年中一直致力于此,Eclipse 将无法识别此构造函数,直到您导入 FlowLayout。我也被告知JPanel(LayoutManager),但是在导入FlowLayout 类之后,该行起作用了。【参考方案2】:

您应该在要对齐的组件上使用setAlignmentX(..),而不是在拥有它们的容器上使用..

JPanel panel = new JPanel();
panel.setLayout(new BoxLayout(panel, BoxLayout.Y_AXIS));
panel.add(c1);
panel.add(c2);

c1.setAlignmentX(Component.LEFT_ALIGNMENT);
c2.setAlignmentX(Component.LEFT_ALIGNMENT);

【讨论】:

我不这么认为。 setAlignementX(Component.LEFT_ALIGNEMENT) 表示组件的左侧将用于对齐元素。并且元素仍将与 JPanel 的中心对齐。 你确定吗?看看这里java2s.com/Code/Java/Swing-JFC/ComponentAlignment.htm setAlignmentX 方法用于添加到面板的按钮,而不是面板本身 杰克,你说的对,这个方法是用在按钮上的,但它没有你描述的效果。它没有定义按钮的位置。它定义了将用于对齐的按钮部分。例如,按钮的“LEFT”侧将用于将按钮置于中心(按钮的左侧将置于中心)。 这无助于(我)在其父组件中对齐整个组件。【参考方案3】:

我最喜欢使用的方法是 BorderLayout 方法。以下是组件可以进入的每个位置的五个示例。该示例适用于组件是否为按钮的情况。我们将把它添加到 JPanel,p。该按钮将被称为 b。

//To align it to the left
p.add(b, BorderLayout.WEST);

//To align it to the right
p.add(b, BorderLayout.EAST);

//To align it at the top
p.add(b, BorderLayout.NORTH);

//To align it to the bottom
p.add(b, BorderLayout.SOUTH);

//To align it to the center
p.add(b, BorderLayout.CENTER);

不要忘记通过键入来导入它:

import java.awt.BorderLayout;

BorderLayout 类中还有其他方法涉及诸如方向之类的事情,但如果您对此感到好奇,可以自行研究。我希望这会有所帮助!

【讨论】:

以上是关于如何在 JPanel 中将所有元素左对齐?的主要内容,如果未能解决你的问题,请参考以下文章

为啥文本元素居中以及如何在 Dart 中将其与右侧对齐

如何使用 GridBagLayout 在 JPanel 中对齐组件中心?

如何将 JLabel 对齐到 JPanel 的左侧?

CSS:如何将列表元素与左对齐文本居中对齐?

CSS:如何将列表元素与左对齐文本居中对齐?

如何在水平LinearLayout中将元素右对齐?