UIManager.getColor有时会返回null

时间:2013-04-03 21:54:20

标签: java swing look-and-feel japplet uimanager

我有一个applet在加载时在这一行生成一个nullpointer异常(但有时只是):

(txtpnNoSeHa是扩展JPanel的类中的JEditorPane。此面板在applet构造函数中实例化)

txtpnNoSeHa.setBackground(UIManager.getColor("Panel.background"));

在构造函数内部调用。

我从中理解的是UIManager.getColor有时可能因为某些数据尚未加载而返回null(没有显示swing面板或类似的东西)

applet是用eclipse的窗口构建器设计的。我怎样才能解决这个问题?任何人都可以对此有所了解吗?

2 个答案:

答案 0 :(得分:2)

正如您所预测的那样,只要第一个挥杆组件可见,就会加载UIManager。这可能会导致null值。您可以在UIManager例程的开头(或main小程序)时通过此次调用手动加载init

try {
    UIManager.setLookAndFeel(UIManager.getCrossPlatformLookAndFeelClassName());
} catch(InvocationTargetException | UnsupportedLookAndFeelException e) {
    e.printStackTrace(); 
}

答案 1 :(得分:2)

过去我遇到过类似的问题,我通过将每个与swing相关的代码从GUI线程(EDT)运行来解决它。

SwingUtilities.invokeLater(new Runnable()
{
    @Override
    public void run()
    {
        // ...
    }
});