Swing GUI在尝试实时更改GUI时抛出异常

Joh*_*dep 2 java swing look-and-feel

所以我有一个swing GUI,我根据另一个GUI类的一些输入改变它的默认外观和感觉,使用类似这样的东西:

javax.swing.UIManager.setLookAndFeel("newlook&feel");
SwingUtilities.updateComponentTreeUI(this);
pack();
Run Code Online (Sandbox Code Playgroud)

这工作正常,但是在控制台上我看到每次调用这个异常时会抛出如下消息:

Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
Run Code Online (Sandbox Code Playgroud)

它指的是来自内部Java类的类的行号.这可能是什么问题,或者我错过了什么.

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

Woj*_*zyk 6

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

也许这就是问题,您是否尝试在EDT线程内调用L&F更改?

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