gpt4 book ai didi

java - JComponent 和组件左对齐

转载 作者:行者123 更新时间:2023-12-01 16:08:59 29 4
gpt4 key购买 nike

使用以下代码,我想创建一个 Jpanel 通用组件并添加两个子组件,一个 Label 和一个 JTextField。我要添加组件,但它们没有左对齐。

(不,我不需要 GridBagLayout,但我试图使用 GridBag 做一个基本示例。您能否描述如何使用 GridBag 而不是其他布局来执行此操作)。

public Component buildStatusComponent() {

// Place the components on one line //
final GridBagLayout layout = new GridBagLayout();
final GridBagConstraints constraints = new GridBagConstraints();
final JPanel group = new JPanel(layout);

constraints.anchor = GridBagConstraints.WEST;
constraints.gridx = 0;
constraints.fill = GridBagConstraints.NONE;
group.setAlignmentX(JComponent.LEFT_ALIGNMENT);
group.add(new JLabel("Messages: "), constraints);

constraints.gridx = 1;
constraints.fill = GridBagConstraints.HORIZONTAL;
group.add(this.statusArea, constraints);

return group;
}

在此级别之上,我只是添加 JPanel 并水平填充。

constraints.gridy++;
constraints.fill = GridBagConstraints.HORIZONTAL;
this.add(this.buildStatusComponent(), constraints);

最佳答案

您似乎没有完全使用 GridBagConstraints。不要输入 group.setAlignmentX(JComponent.LEFT_ALIGNMENT) (我似乎从来没有工作过,哈哈),只需使用 contraints.anchor = GridBagConstraints.WEST。

很多人不喜欢 GridBagLayout,但我发现一旦您了解了它的工作原理,它就很容易使用。最难处理的是网格中对象的权重。

但具体来说,对于这个问题,您只想使用 GridBagConstraint 常量将组件锚定到一侧,并依靠约束类来控制事物的走向。

编辑:好的,然后给他们重量。 (虽然这可能不能解决问题呵呵)

constraints.weightx = 1d;

发生的事情是所有东西都有相同的重量,所以我相信它的间距是均匀的。如果你想“塞满”这些项目,你可以在最后一个组件后添加一个空的 JPanel 并设置 fill = REMAINDER 并将其权重设为 1,其他组件的权重设为 0。权重排序决定了一个组件可以“推挤”的程度'围绕另一个。

GridBagConstraints gbc = new GridBagConstraints();
JPanel p = new JPanel(new GridBagLayout());
gbc.gridx = 0;
gbc.gridy = 0;
gbc.anchor = GridBagConstraints.WEST;

p.add(new JLabel("A"), gbc);
gbc.gridx++;
p.add(new JLabel("B"), gbc);
gbc.gridx++;
gbc.weightx = 1d;
gbc.fill = GridBagConstraints.REMAINDER;
p.add(new JPanel(), gbc);
gbc.fill = GridBagConstraints.NONE;
gbc.weightx = 0d;
.... continue on filling stuff...

这是处理它的一种方法。尝试一下它,直到您了解它是如何工作的,这是很好的。

关于java - JComponent 和组件左对齐,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1930014/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com