我在点击按钮更改外观时,使用
UIManager.setLookAndFeel("com.sun.java.swing.plaf.motif.MotifLookAndFeel");
SwingUtilities.updateComponentTreeUI(frame)时,
ChartPanel就更改不了,其它的都可以更改掉外观,ChartPanel是JPanel的子类,它的updateUI方法里面继承了
super.updateUI(); 就是更改不了,我重启应用程序后,外观就可以更改,请问是什么原因? 只有8分,全给了

解决方案 »

  1.   

    UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
      

  2.   

    chenjing_ia_a_girl() ,
    UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());这条语句不是取系统默认的lookAndFeel了吗?我的意思是我有几个单选项,选择不同的单选项,就可以动态的更新应用程序的外观
      

  3.   

    看JDK自带的例子:C:\Programme\Java\jdk1.6.0_01\demo\jfc\Metalworks
      

  4.   

    这个是要看你的UIManager.setLookAndFeel方法执行在什么地方的!如果你执行在一个UI构件已构造后,那么那个构件就不会更改外观.所以建议这个方法执行在程序的最前面.
      

  5.   

    hoverlees(好棒)
    这个是要看你的UIManager.setLookAndFeel方法执行在什么地方的!如果你执行在一个UI构件已构造后,那么那个构件就不会更改外观.所以建议这个方法执行在程序的最前面.这个在构造后也可以改的,执行这条语句SwingUtilities.updateComponentTreeUI(frame)时,它就会调用每个组件的updateUI()方法的,就可以更改掉外观
      

  6.   

    Inhibitory(),java自带的DEMO我已经看过,因为我是用了我自己定义的一个JPanel子类,只有这个组件没有更改掉,其它的都更改了
      

  7.   

    你是不是更改了JPanel子类与UI有关的东西?如果不改的话,应该没问题
      

  8.   

    Inhibitory() ,没有更改过,我只是继承了JPanel的updateUI方法,其它的都没有动,还有就是,我在启动时更改LookAndFeel类,它就会做出相应的变化
      

  9.   

    Inhibitory(),java自带的DEMO我已经看过,因为我是用了我自己定义的一个JPanel子类,只有这个组件没有更改掉,其它的都更改了
    --------------------------------------------------------------
    是不是你重载了某些函数,忘记了调用super.method()
      

  10.   

    updateUI
    把这个方法注释掉,看一下效果.
      

  11.   

    Inhibitory() 
    updateUI方法注释掉,我也试过了,没用的,还是一样的