我想用我自己的OptionPaneUI覆盖BasicOptionPaneUI。然而,我创建的JOptionPanes仍然被BasicOptionPaneUI绘制。
下面是我的自定义外观中的initClassDefaults-Method:
@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"));
}我的主要方法是:
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");
}我得到的输出是
javax.swing.plaf.basic.BasicOptionPaneUI
my.own.plaf.ui.MyOptionPaneUI
My UIClassID is: OptionPaneUI
Current implementation: BasicOptionPaneUI还有一个给我的UI添加颜色的选项窗格。我对MyButtonUI的定义与它的定义相同,它的作用就像一个护身符。
我忽略了什么?
发布于 2016-04-25 04:16:35
事实证明,我忽略的事情是覆盖createUI()-Method,以便它返回一个新的MyOptionPaneUI.
https://stackoverflow.com/questions/36804480
复制相似问题