Java JButton页边距。当nimbus plaf时不受尊重

Java JButton页边距。当nimbus plaf时不受尊重,java,swing,jbutton,nimbus,uidefaults,Java,Swing,Jbutton,Nimbus,Uidefaults,安装nimbus look and feel时,不尊重JButton的属性margin。 我需要一些“小”按钮,但nimbus强制按钮文本周围的空间变大,所以我只能得到“非常大”的按钮 我发现有一个属性叫做: Button.contentMargins 这是预设的大值。 我尝试用以下代码覆盖它: UIManager.getDefaults().put("Button.contentMargins", new InsetsUIResource(0,0,0,0)); 在主界面中,设置nimbus

安装nimbus look and feel时,不尊重
JButton
的属性
margin

。 我需要一些“小”按钮,但nimbus强制按钮文本周围的空间变大,所以我只能得到“非常大”的按钮
我发现有一个属性叫做:

Button.contentMargins
这是预设的大值。
我尝试用以下代码覆盖它:

UIManager.getDefaults().put("Button.contentMargins", new InsetsUIResource(0,0,0,0));
主界面中
,设置nimbus外观之后。

但是什么也没有发生,按钮文本周围的空白仍然很大。 有什么想法吗?

基于线程,可以从
Nimbus Defaults
中更改并为某些内容分配一个值

但是你确定你需要这个输出到GUI吗

v、 带Nimbus L&F的美国基本JButton

源代码

import java.awt.*;
import javax.swing.*;
import javax.swing.plaf.InsetsUIResource;

public class NimbusJPanelBackGround {

    public NimbusJPanelBackGround() {
        JButton btn = new JButton("  Whatever  ");
        JButton btn1 = new JButton("  Whatever  ");
        JPanel p = new JPanel();
        p.add(btn);
        p.add(btn1);
        JFrame f = new JFrame();
        f.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
        f.add(p, BorderLayout.CENTER);
        f.setSize(200, 100);
        f.setLocation(150, 150);
        f.setVisible(true);
    }

    public static void main(String[] args) {

        try {
            for (UIManager.LookAndFeelInfo laf : UIManager.getInstalledLookAndFeels()) {
                if ("Nimbus".equals(laf.getName())) {
                    UIManager.setLookAndFeel(laf.getClassName());
                    UIManager.getLookAndFeelDefaults().put("Panel.background", Color.white);
                    UIManager.getLookAndFeelDefaults().put("Button.contentMargins", new InsetsUIResource(0,0,0,0));
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        EventQueue.invokeLater(new Runnable() {

            @Override
            public void run() {
                NimbusJPanelBackGround nimbusJPanelBackGround = new NimbusJPanelBackGround();
            }
        });
    }
}

对于有趣的问题,

更改
JComponent.sizeVariant
的值也可能有效,如中所述