现在公司要我为公司的软件写一套外观风格,本来是要用WindowsLookAndFeel的,但后来说要定义自己的颜色风格。想问的就是如果只是改变颜色的话,如果写一个MyLookAndFeel继承BasicLookAndFeel类,只在initSystemColorDefaults()方法中修改颜色值,之后在其他程序中使用的时候,使用try语句调用出来就可以了吧!
try {
UIManager.setLookAndFeel("MyLookAndFeel");
}
catch ( Exception e ) {…………}
try {
UIManager.setLookAndFeel("MyLookAndFeel");
}
catch ( Exception e ) {…………}
这样其它部份和你继承的还是一样的
public class MyLookAndFeel extends MetalLookAndFeel { public void initClassDefaults(UIDefaults table)
{
super.initClassDefaults(table);
final String metalPackageName = "javax.swing.plaf.metal.";
final String icpPackageName = "com.****"; Object[] uiDefaults = {
"ButtonUI", icpPackageName + "MyButtonUI",
"CheckBoxUI", icpPackageName + "MyCheckBoxUI",
。
写一个自己的lookandfeel类,然后逐个实现其中的MyButtonUI, MyCheckBoxUI等等..
我继承了WindowsLookAndFeel这个类,并且修改了initSystemColorDefaults方法中的颜色的参数,编译这个MyLookAndFeel类能够通过,但在一个测试程序中的main()方法中使用:
try {
UIManager.setLookAndFeel(laf);
} catch ( Exception e ) {
System.out.println ("Unexpected error. \nProgram Terminated");
e.printStackTrace();
System.exit(0);
}
来加入这个继承的类,编译通过,运行时出现:
Exception in thread "main" java.lang.NoClassDefFoundError: MyLookAndFeel (wrong
name: com/sun/java/swing/plaf/windows/MyLookAndFeel)
at java.lang.ClassLoader.defineClass0(Native Method)
at java.lang.ClassLoader.defineClass(Unknown Source)
at java.security.SecureClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.access$100(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClassInternal(Unknown Source)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Unknown Source)
at javax.swing.SwingUtilities.loadSystemClass(Unknown Source)
at javax.swing.UIManager.setLookAndFeel(Unknown Source)
错误。请问应该怎样修改?