Размер кнопки JOptionPane (Nimbus LAF)

Недавно я работал над проектом Swing с Nimbus Look and Feel. Я хочу, чтобы все кнопки в JOptionPane имели одинаковый размер, но тщетно.

import javax.swing.*;

public class NimbusTest {
    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {
            @Override
            public void run() {    
                try {
                    for (UIManager.LookAndFeelInfo info : UIManager.getInstalledLookAndFeels()) {
                        if (("Nimbus").equals(info.getName())) {
                            UIManager.setLookAndFeel(info.getClassName());
                            break;
                        }
                    }
                } catch (Exception ex) {
                    ex.printStackTrace();
                }
                UIManager.put("OptionPane.sameSizeButtons", true);    
                String[] options = new String[]{"--------------------","short","1"};
                int option = JOptionPane.showOptionDialog(null, "Nimbus problem", "JOptionPane", JOptionPane.DEFAULT_OPTION, JOptionPane.QUESTION_MESSAGE, null, options, options[1]);    
            }
        });
    }
}

Я хочу JOptionPane с тремя кнопками одинакового размера. Однако я получил следующий результат:

введите здесь описание изображения

Мой код UIManager.put("OptionPane.sameSizeButtons", true); кажется проигнорированным. Что мне делать, чтобы создать JOptionPane с кнопками того же размера, если я не хочу воссоздавать диалоговое окно, подобное JOptionPane?


person tonychow0929    schedule 09.05.2015    source источник


Ответы (1)


Заменять

 UIManager.put("OptionPane.sameSizeButtons", true);

с участием

 UIManager.getLookAndFeelDefaults().put("OptionPane.sameSizeButtons", true);

И это работает как шарм

введите здесь описание изображения

person Guillaume Polet    schedule 09.05.2015
comment
Как установить размер в пикселях? - person Ethan JC Rubik; 14.03.2016
comment
@EthanJCRubik, если необходимо, вы расширяете jbutton и переопределяете getpreferedsize - person Guillaume Polet; 14.03.2016