3

安装 nimbus 外观和感觉时,不尊重margina的属性。. 我需要一些“小”按钮,但是 nimbus 强制按钮文本周围的空间很大,所以我只得到“非常大”的按钮。 我在nimbus 默认页面中发现有一个名为:JButton

Button.contentMargins

即预设了较大的值。
我试图用以下代码覆盖它:

UIManager.getDefaults().put("Button.contentMargins", new InsetsUIResource(0,0,0,0));

在 中main,刚刚设置了 nimbus 的外观和感觉。

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

4

2 回答 2

3

更改 的值JComponent.sizeVariant也可能是有效的,如调整组件大小中所述。

于 2011-11-27T22:21:41.087 回答
2

基于线程如何使用 Nimbus 外观和感觉更改 JPanel 的背景颜色?可以从 中更改和分配一个值Nimbus Defaults

但是你确定你需要这个输出到 GUI,没什么好说的

在此处输入图像描述

与 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();
            }
        });
    }
}

以前为有趣的问题 +1

于 2011-11-27T19:30:10.247 回答