gpt4 book ai didi

java - MigLayout 对齐中心不会使 JLabel 组件居中

转载 作者:行者123 更新时间:2023-11-29 03:18:40 24 4
gpt4 key购买 nike

我正在使用 MigLayout我发现它很灵活等等,但我在用它居中时遇到了问题。我尝试使用 gapleft 50% 但似乎百分比数字需要根据不同的帧大小进行更改,因为它还取决于组件的大小。因此,如果组件使用 gapleft 25% 居中,则如果我调整框架的宽度,它将位于不同的位置。

我试过只使用 align center 但它一点作用都没有。

我也试过 new CC().alignX("center").spanX() 和同样的事情:

img
(来源:gyazo.com)

它粘在左边,但是当我使用 gapleft 时它确实有效,为什么?

    super.setLayout(new MigLayout());
this.loginPane = new LoginPanel();

BufferedImage logo = ImageIO.read(new File("assets/logo.png"));
JLabel logoLabel = new JLabel(new ImageIcon(logo));

super.add(logoLabel, new CC().alignX("center").spanX());

最佳答案

It's sticks to left, however it does work when I use gapleft, why?

基于这一行:

super.setLayout(new MigLayout()); // why super? Did you override setLayout() method?

默认 MigLayout rows 不会填满所有可用宽度,而只会填满显示最长行所必需的宽度(基于组件宽度)。话虽如此,您的 JLabel 适合 Logo 图像宽度,仅此而已,它看起来像粘在左侧。您必须在实例化时告诉布局管理器它必须填充所有可用宽度:

super.setLayout(new MigLayout("fillx"));

或者

LC layoutConstraints = new LC();
layoutConstraints.setFillX(true);
super.setLayout(new MigLayout(layoutConstraints);

然后,您的组件约束将按预期工作。


图片

基于这段代码:

MigLayout layout = new MigLayout("fillx, debug");
JPanel content = new JPanel(layout);

JLabel label = new JLabel("Warehouse");
label.setFont(label.getFont().deriveFont(Font.BOLD | Font.ITALIC, 18));

CC componentConstraints = new CC();
componentConstraints.alignX("center").spanX();
content.add(label, componentConstraints);

enter image description here


注意:您可以通过执行以下操作启用调试功能:

super.setLayout(new MigLayout("fillx, debug"));

或者

LC layoutConstraints = new LC();
layoutConstraints.setFillX(true);
layoutConstraints.setDebugMillis(500);
super.setLayout(new MigLayout(layoutConstraints);

关于java - MigLayout 对齐中心不会使 JLabel 组件居中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24976391/

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