1

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

小按钮

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

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

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

4

4 回答 4

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

于 2010-05-03T01:17:56.740 回答
1

以 MIke 的回答作为一家初创公司,我在 MIG“CheatSheet”中发现了解决您问题的可能方法。

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

例如

MigLayout buttonMig = new MigLayout("", "[139px,grow]0[179px,grow]50[142px,grow][143px,grow]", "0[60px:60px:60px,center]");
于 2011-03-30T10:07:52.977 回答
1

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

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

或者

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

此外,在使用该物质的外观和感觉时,还有一个特征是最小尺寸总是太宽。这可以被这个晦涩的黑客覆盖。

okButton.putClientProperty(
    SubstanceLookAndFeel.BUTTON_NO_MIN_SIZE_PROPERTY, Boolean.TRUE);
于 2012-05-30T12:57:28.287 回答
1

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

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

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

于 2010-05-02T21:29:45.907 回答