现在公司要我为公司的软件写一套外观风格,本来是要用WindowsLookAndFeel的,但后来说要定义自己的颜色风格。想问的就是如果只是改变颜色的话,如果写一个MyLookAndFeel继承BasicLookAndFeel类,只在initSystemColorDefaults()方法中修改颜色值,之后在其他程序中使用的时候,使用try语句调用出来就可以了吧!
try {
UIManager.setLookAndFeel("MyLookAndFeel");

catch ( Exception e ) {…………}

解决方案 »

  1.   

    LookAndFeel有一大套的组件的,不过,你只改一点点的话,还是可以 的
    这样其它部份和你继承的还是一样的
      

  2.   

    在另一个帖子中有朋友建议:
    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)
    错误。请问应该怎样修改?