3

ニンバスのルックアンドフィールがインストールされている場合、marginaのプロパティは尊重されません。。いくつかの「小さな」ボタンが必要ですが、ニンバスはボタンのテキストの周りのスペースを大きくするため、「非常に大きな」ボタンしか表示されません。nimbusのデフォルトページで、次のプロパティがあること を発見しました。JButton

Button.contentMargins

それは大きな値で事前設定されています。
私はそれを次のコードでオーバーライドしようとしました:

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

で、mainニンバスのルックアンドフィールを設定した直後。

しかし、何も起こりません。ボタンのテキストの周りの空きスペースはまだ大きいままです。何か案が?

4

2 に答える 2

3

コンポーネントのサイズ変更で説明されているように、の値を変更するJComponent.sizeVariantことも効果的です。

于 2011-11-27T22:21:41.087 に答える
2

スレッドのベースにニンバスのルックアンドフィールを使用してJPanelsの背景色を変更するにはどうすればよいですか?から何かに1つの値を変更して割り当てることができますNimbus Defaults

しかし、GUIへのこの出力が必要だったと確信しています。

ここに画像の説明を入力してください

vs基本的なJButtonとNimbusL&F

ここに画像の説明を入力してください

コードから

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 に答える