2016-04-22 1 views
0

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?

Répondre

0

Tourné la chose que je négligé était de passer outre la createUI() - Méthode pour qu'il retourne une nouvelle MyOptionPaneUI

-.-.