2015-05-09 5 views
1

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

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 с тремя кнопками одинакового размера. Тем не менее, я получил следующий результат:

enter image description here

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

ответ

3

Заменить

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

с

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

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

enter image description here

+0

Спасибо! Он работает сейчас =) – tony200910041

+0

Как установить размер в пикселях? –

+0

@EthanJCRubik, если необходимо, вы расширяете jbutton и переопределяете getpreferedsize –