gpt4 book ai didi

java - 如何消除 MigLayout 中两个单元格之间的垂直间隙?

转载 作者:塔克拉玛干 更新时间:2023-11-02 07:52:10 27 4
gpt4 key购买 nike

非常简单的问题:如何去除包含两个 JCheckBox 的两个单元格之间的垂直间隙?我用红色边框标记了图片中的间隙。

gap

代码如下:

import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JFrame;
import javax.swing.JPanel;

import net.miginfocom.swing.MigLayout;

public class Main {
public static void main(String[] args) {
JPanel somePanel = new JPanel();
somePanel.setLayout(new MigLayout("insets 0, debug", "", ""));
somePanel.add(new JCheckBox("first option"), "h 20!");
somePanel.add(new JButton("click me"), "spany 2, h 40!, w 60%, wrap");
somePanel.add(new JCheckBox("option two"), "h 20!");

JFrame frame = new JFrame();
frame.setContentPane(somePanel);
frame.pack();
frame.setVisible(true);
}
}

最佳答案

如果最小间隙应仅应用于特定的行/列之间,则在行/列约束中定义:

new MigLayout("insets 0, debug", "", "[]0[]"));

(想知道这对你不起作用吗?这里没问题:)

或者在 layoutContraints 中,如果它们应该应用在所有行之间:

new MigLayout("insets 0, gapy 0, debug"));

顺便说一句:布局“编码”应该遵循与所有编码相同的规则,f.i. DRY :-) 特别是,如果您可以通过布局/行约束实现目标,我的规则是不要重复组件约束。在示例中,您可以通过以下方式摆脱除跨越之外的所有组件约束:

somePanel.setLayout(new MigLayout("insets 0, debug, wrap 2", 
"[][60%, fill]", "[20!, fill]0"));
somePanel.add(new JCheckBox("first option"));
somePanel.add(new JButton("click me"), "spany 2");
somePanel.add(new JCheckBox("option two"));

关于java - 如何消除 MigLayout 中两个单元格之间的垂直间隙?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13125789/

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