因此,我有一个摆动的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();
}
});