非常简单的问题:如何去除包含两个 JCheckBox
的两个单元格之间的垂直间隙?我用红色边框标记了图片中的间隙。
代码如下:
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/