设置Nimbus LookandFeel后,Java Swing JOptionPane是和否按钮的字体大小不同

Hai*_* Bi 5 java swing look-and-feel joptionpane nimbus

由于在默认的LookAndFeel中字体大小太小,我使用几行代码将其设置为Nimbus,而我的JOptionPane显示具有不同大小的YesNo按钮. 仍然非常小,而" 否"设置为我指定的大小.有谁知道为什么或如何解决它?

public static void setUIFont(Font a){
    FontUIResource ax=new FontUIResource(a);
    javax.swing.UIManager.put("OptionPane.messageFont", ax);
    javax.swing.UIManager.put("OptionPane.buttonFont", ax);
    javax.swing.UIManager.put("OptionPane.Font", ax);
    javax.swing.UIManager.put("InternalFrame.titleFont", ax);
    javax.swing.UIManager.put("TextField.font", ax);
    javax.swing.UIManager.put("ComboBox.font", ax);
}
Run Code Online (Sandbox Code Playgroud)

...

UIManager.setLookAndFeel("com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel"); 

class UseNimBus extends SwingInvoker{
    public void run(){
        JDialog.setDefaultLookAndFeelDecorated(true);
        setUIFont(new FontUIResource(new Font(ufont, Font.PLAIN, 20)));
    }
}
(new UseNimBus()).execute();// just invokeLater()
Run Code Online (Sandbox Code Playgroud)

以下行显示选项窗格,但它具有" 是"和" 否",具有不同的大小.这是正常还是只是我的问题?

inputValuex=JOptionPane.showConfirmDialog(
    myWin, "Are you exiting?", "You clicked X", JOptionPane.YES_NO_OPTION);
Run Code Online (Sandbox Code Playgroud)

更新

还是行不通.我试过使用代码

javax.swing.UIManager.put("OptionPane.isYesLast", true);

更改按钮的位置,但它没有任何效果.我只是想看看如何设置这些值,如布尔值.

另外,我甚至列出了UIManager.getDefaults()包含optionpanebutton的所有键,并且它们的字体大小都设置为20. Yes按钮仍然是较小的字体.

Mad*_*mer 4

的字体JButton实际上来自该Button.font属性。

如果我将其添加到您的属性列表中,它就会起作用。

javax.swing.UIManager.put("Button.font", ax);
Run Code Online (Sandbox Code Playgroud)

为什么你会得到两种不同的尺寸,虽然很有趣,但目前我还是无法理解。