JButton поля.Не соблюдается, когда нимб плаф - PullRequest
3 голосов
/ 27 ноября 2011

Свойство margin для JButton не учитывается при установке внешнего вида nimbus.
.Мне нужны некоторые «маленькие» кнопки, но нимб заставляет пространство вокруг текста кнопки быть большим, поэтому я получаю только «очень большие» кнопки.
Я обнаружил на странице nimbus defaults , что есть свойство с именем:

Button.contentMargins

, для которого заданы большие значения.
Я пытался переопределить его с помощьюследующий код:

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

в main, сразу после настройки внешнего вида венчика.

Но ничего не происходит, пустое пространство вокруг кнопок текста по-прежнемуостается большим.Есть идеи?

Ответы [ 2 ]

3 голосов
/ 28 ноября 2011

Изменение значения JComponent.sizeVariant также может быть эффективным, как описано в Изменение размера компонента .

2 голосов
/ 27 ноября 2011

на основе потока Как изменить цвет фона для JPanels с помощью Nimbus Look and Feel? можно изменить и назначить одно значение для чего-то из Nimbus Defaults,

, но этоВы уверены, что вам нужен этот вывод в графический интерфейс, ничего хорошего

enter image description here

против базового JButton с Nimbus L & F

enter image description here

изкод

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 за интересующий вопрос

...