填充FlowLayout的空白空间

4

我有一个流式布局面板,里面有一个文本框。虽然文本框不是很宽,但我想在下一行放置组件。如何使用空白框填充剩余的空间?


1
使用一个布局管理器,它可以实现你想要的效果。 - kleopatra
1
为了使用 FlowLayout 将组件放置在极左侧,您可以这样做:panelObject.setLayout(new FlowLayout(FlowLayout.LEFT));,这将允许它将组件从极左侧放置,而不是像没有参数的 FlowLayout() 构造函数一样从中间开始。 - nIcE cOw
1
你的评论仅用15个按键就解决了我的问题,@nIcEcOw。非常感谢。这样有帮助的评论应该被发布为答案。 :-) - Ole V.V.
@OleV.V.:很高兴我的评论在某种程度上对您有所帮助。至于其他方面,非常欢迎您,并保持微笑 :-) - nIcE cOw
3个回答

3

用空的JPanel填充它:

new JPanel();

但是我已经在面板内有一个JLabel,目前它处于中心位置,原因很奇怪,经过一番尝试,我发现添加的标签越多,该特定标签就会向左移动。我想将标签全部移到左侧,但我需要以某种方式添加一些空白空间,JPanel似乎无法实现这一点。 - Soler Mani
不,那甚至不算是黑客攻击(无论问题描述得多么奇怪)。 - kleopatra

3
如果你希望对组件的布局方式具有更多确定性的控制,你应该考虑使用不同的布局管理器,如 BoxLayout、GridLayout 或 GridBagLayout。你可能会设法欺骗 FlowLayout 做你想要的事情,但如果用户调整窗口大小或者在操作系统层面上更改字体 DPI,会发生什么呢?不要通过在 FlowLayout 中添加虚拟组件来使组件处于不同的行中,而是考虑使用具有这些概念内置的布局管理器更明确地表达上下关系(例如GridBagConstraints.gridy)。

没错,同意1+。此外@Soler:请注意,您可以嵌套JPanels,每个面板使用自己的布局管理器,通过这样做可以创建复杂的GUI,但只使用简单的布局。 - Hovercraft Full Of Eels

1

不需要过度复杂化。这个简单的解决方案可行(至少对我来说是这样):

panelObject.setLayout(new FlowLayout(FlowLayout.LEADING));

这将使组件在从左到右默认阅读方向的计算机上向左对齐(称为方向),并在从右侧阅读方向的计算机上以相反的方式对齐。因此,它非常适合国际化。如果您希望在所有计算机上将组件放置在左侧(并将空白空间放置在右侧),请使用new FlowLayout(FlowLayout.LEFT)。感谢@nIcE cOw在问题下的评论中提出此解决方案,并允许我将其发布为答案。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接