在MigLayout中删除JButton填充

时间:2010-05-02 20:06:39

标签: java padding look-and-feel jbutton miglayout

我有一个像这样的小“弹出窗口”:

Tiny button

但我不想在按钮周围填充,我希望它与提供的文本一样小。

btn.setMargin(new Insets(1, 1, 1, 1));
panel.add(lbl, "wrap");
panel.add(btn);
frame.pack();
frame.setVisible(true);

至少这不起作用...... 可以在MigLayout上实现,还是应该为此框架使用其他布局管理器。

4 个答案:

答案 0 :(得分:4)

它构建的MigLayout约束是什么?如果您还没有,可以尝试使用novisualpadding。此外,debug布局约束将在组件周围绘制框以显示它们占用的空间。 (我认为红色虚线是组件的大小,蓝色虚线是组件所在的“单元”。)

// old version
// JPanel panel = new JPanel(new MigLayout());

// new verion
JPanel panel = new JPanel(new MigLayout("debug, novisualpadding"));

我经常使用MigLayout并且发现“备忘单”非常有用。 http://migcalendar.com/miglayout/cheatsheet.html

答案 1 :(得分:1)

布局管理器不应影响组件的绘制方式。

使用Metal LAF时,setMargin(...)对我来说很好。也许你的LAF不支持setMargin()方法。或者你可能在其他地方有一些代码覆盖按钮的首选大小,导致它像这样绘制。

但是,如果MIG布局成为问题,您可以尝试Wrap Layout

答案 2 :(得分:1)

将MIke作为创业公司的答案,我在MIG“CheatSheet”中找到了解决问题的可能方案。

设置MIGLayout时,可以使用定义列和行的方括号之间的整数指定组件之间的间隙。

E.g。

MigLayout buttonMig = new MigLayout("", "[139px,grow]0[179px,grow]50[142px,grow][143px,grow]", "0[60px:60px:60px,center]");

答案 3 :(得分:1)

我刚刚遇到这个问题。我发现以下内容对我有用:

this.add(okButton, "width pref:pref:pref");

this.add(okButton, "wmax pref");

此外,当使用物质外观时,最小尺寸总是太宽。这可以用这个模糊的黑客来覆盖。

okButton.putClientProperty(
    SubstanceLookAndFeel.BUTTON_NO_MIN_SIZE_PROPERTY, Boolean.TRUE);