【问题标题】:Remove JButton padding in MigLayout删除 MigLayout 中的 JButton 填充
【发布时间】:2011-02-14 20:03:16
【问题描述】:

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

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

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

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

【问题讨论】:

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


    【解决方案1】:

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

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

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

    此外,在使用实体外观时,还有一个特点是最小尺寸总是太宽。这可以被这个晦涩的 hack 覆盖。

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

    【讨论】:

      【解决方案2】:

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

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

      例如

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

      【讨论】:

        【解决方案3】:

        您的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

        【讨论】:

        • 我想知道为什么另一个答案赢了,这要准确得多。
        【解决方案4】:

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

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

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

        【讨论】:

        • 非常感谢!造成它的是 Substance Creme 的外观和感觉。
        • 但在我看来,所有的物质皮肤都会这样做......有什么办法吗?
        猜你喜欢
        • 2022-12-15
        • 1970-01-01
        • 2019-06-20
        • 1970-01-01
        • 2017-06-16
        • 1970-01-01
        • 2015-04-21
        • 2021-04-20
        • 2021-04-30
        相关资源
        最近更新 更多