0

我有一个小程序在加载时在这一行(但只是有时)生成一个空指针异常:

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

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

在构造函数内部调用。

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

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

4

2 回答 2

2

正如您所预测的,UIManager一旦第一个摆动组件可见,就会加载 。这可能会导致null价值观。您可以在例程开始时UIManager使用此调用手动加载(或对于小程序)maininit

try {
    UIManager.setLookAndFeel(UIManager.getCrossPlatformLookAndFeelClassName());
} catch(InvocationTargetException | UnsupportedLookAndFeelException e) {
    e.printStackTrace(); 
}
于 2013-04-03T22:00:43.587 回答
2

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

SwingUtilities.invokeLater(new Runnable()
{
    @Override
    public void run()
    {
        // ...
    }
});
于 2013-04-03T22:04:37.777 回答