Je souhaite remplacer BasicOptionPaneUI par mon propre OptionPaneUI. Cependant, JOptionPanes que je crée est toujours peint par BasicOptionPaneUI.JOptionPane ignore OptionPaneUI spécifié dans UIDefaults
Voici la initClassDefaults méthode dans mon look and feel:
@Override
protected void initClassDefaults(UIDefaults table) {
super.initClassDefaults(table);
final String packageName = "my.own.plaf.ui.";
System.out.println(table.get("OptionPaneUI"));
Object[] uiDefaults = {
"ButtonUI", packageName + "MyButtonUI",
"OptionPaneUI", packageName + "MyOptionPaneUI",
};
table.putDefaults(uiDefaults);
System.out.println(table.get("OptionPaneUI"));
}
Et ma méthode principale:
public static void main(String[] args) {
try {
UIManager.setLookAndFeel(new MyOwnLookAndFeel());
} catch (UnsupportedLookAndFeelException e) {
e.printStackTrace();
}
JOptionPane optionPane = new JOptionPane();
System.out.println("My UIClassID is: " + optionPane.getUIClassID());
System.out.println("Current implementation: " + optionPane.getUI().getClass().getSimpleName());
JOptionPane.showMessageDialog(null, "Ping");
}
La sortie que je reçois est
javax.swing.plaf.basic.BasicOptionPaneUI
my.own.plaf.ui.MyOptionPaneUI
My UIClassID is: OptionPaneUI
Current implementation: BasicOptionPaneUI
et un volet d'options qui est en train d'igorer mon interface utilisateur. MyButtonUI, que je définis de la même manière fonctionne comme un charme.
Qu'est-ce que je néglige?