因此,我有一个摆动的GUI,在其中,我可以根据其他GUI类的输入,使用如下所示更改默认外观:

javax.swing.UIManager.setLookAndFeel("newlook&feel");
SwingUtilities.updateComponentTreeUI(this);
pack();


这可以正常工作,但是在控制台上我每次看到这种情况时都会抛出异常,并显示以下消息:

Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException


它是指来自内部Java类的类的行号。这可能是问题所在,还是我错过了一些东西。

只是在这种情况下,SwingUtilities.isEventDispatchThread()返回false

最佳答案

只是一点,SwingUtilities.isEventDispatchThread()在以下位置返回false
  这种情况。


也许是问题所在,您是否尝试过在EDT线程中调用L&F更改?

    SwingUtilities.invokeLater(new Runnable() {
       public void run() {
         javax.swing.UIManager.setLookAndFeel("newlook&feel");
         SwingUtilities.updateComponentTreeUI(OuterClassName.this);
         pack();
        }
      });

09-04 05:40