gpt4 book ai didi

java - GridBagLayout 标签的一个单元格对齐

转载 作者:太空宇宙 更新时间:2023-11-04 07:57:15 24 4
gpt4 key购买 nike

例如,我在网格布局中有 3x3 组件,我希望它们全部都是标签,但由于我有一些填充,我希望标签位于其单元格的中心。但我似乎无法管理它......

部分相关代码:

panel = new JPanel();
GridBagLayout gridBag = new GridBagLayout();
panel.setLayout(gridBag);
panel.setSize(new Dimension(30, 400));
GridBagConstraints c = new GridBagConstraints()

JLabel lab = new JLabel("proba");
lab.setBorder(outline);
c.fill = GridBagConstraints.BOTH;
c.gridx =2; c.gridy=2; c.ipady = 10; c.ipadx=10;

c.ipadx=100; panel.add(lab,c);

最佳答案

[更新]

你真的应该发布一个SSCCE所以我们都可以尝试一下,而不必猜测问题出在哪里。我的最后一个猜测 - 这是你应该做的事情,无论它是否解决了你当前的问题 - 是

    label.setHorizontalAlignment(JLabel.CENTER);

如果您的标签居中并填充整个网格单元,默认情况下文本仍将左对齐。上述更改将导致文本在标签内居中。

但是,如果您的标签未填充单元格,这将无济于事。

[原文]

很难准确地说出哪里出了问题,因为这不是一个完整的程序,但这里有一些评论可能会让您走上正轨。

首先,您应该使用 setPreferredSize 而不是 setSize(请参阅 Java: Difference between the setPreferredSize() and setSize() methods in components )

当您进行此更改时,您会发现该面板并不完全是您想要的。它又高又瘦。也许是拼写错误 - 您的意思是 (300,400) 而不是 (30,400)

现在我猜你所有的标签都会聚集在一起。为了让它们展开,您需要添加:

c.weightx = .5;
c.weighty = .5;

(实际上任何非零值都可以)。 http://docs.oracle.com/javase/tutorial/uiswing/layout/gridbag.html 中对此进行了描述。

Unless you specify at least one non-zero value for weightx or weighty, all the components clump together in the center of their container. This is because when the weight is 0.0 (the default), the GridBagLayout puts any extra space between its grid of cells and the edges of the container.

这应该会让你接近(r)...

关于java - GridBagLayout 标签的一个单元格对齐,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13422521/

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