Java:防止MetalFileChooserUI中的NPE $ IndentIcon.getIconWidth?

时间:2008-09-19 07:54:15

标签: java exception nullpointerexception jfilechooser

在Windows系统上

。我使用FileChooser获得以下NPE。这是一个尚未被太阳修复的已知错误。 http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6342301

有人知道防范此异常的解决方法吗?

感谢。 安德烈

  

线程“AWT-EventQueue-2”中的异常java.lang.NullPointerException     在   javax.swing.plaf.metal.MetalFileChooserUI中的$ IndentIcon.getIconWidth(未知   来自)javax.swing.SwingUtilities.layoutCompoundLabelImpl(未知   来源)在javax.swing.SwingUtilities.layoutCompoundLabel(未知   来源)在javax.swing.plaf.basic.BasicLabelUI.layoutCL(未知   来源)at   javax.swing.plaf.basic.BasicLabelUI.getPreferredSize(未知来源)     在javax.swing.JComponent.getPreferredSize(未知来源)at   javax.swing.plaf.basic.BasicListUI.updateLayoutState(未知来源)     在javax.swing.plaf.basic.BasicListUI.maybeUpdateLayoutState(未知   来源)at   javax.swing.plaf.basic.BasicListUI中的$ Handler.valueChanged(未知   来源)at   javax.swing.DefaultListSelectionModel.fireValueChanged(未知来源)     在javax.swing.DefaultListSelectionModel.fireValueChanged(未知   来源)at   javax.swing.DefaultListSelectionModel.fireValueChanged(未知来源)     在javax.swing.DefaultListSelectionModel.changeSelection(未知   来源)at   javax.swing.DefaultListSelectionModel.changeSelection(未知来源)     在javax.swing.DefaultListSelectionModel.setSelectionInterval(未知   来自)javax.swing.JList.setSelectedIndex(未知来源)at   javax.swing.plaf.basic.BasicComboPopup.setListSelection(未知   来源)在javax.swing.plaf.basic.BasicComboPopup.access $ 300(未知   来源)at   javax.swing.plaf.basic.BasicComboPopup中的$ Handler.itemStateChanged(未知   来源)在javax.swing.JComboBox.fireItemStateChanged(未知来源)     在javax.swing.JComboBox.selectedItemChanged(未知来源)at   javax.swing.JComboBox.contentsChanged(未知来源)

3 个答案:

答案 0 :(得分:1)

在您链接的错误报告中,他们还提到了一种解决方法。 它似乎归结为按特定顺序调用方法。 你试过了吗?

  

问题描述:   似乎之间存在无证的不良互动   明确地设置UI并删除所有文件过滤器,甚至是暂时的。   如果在设置ui之前完成后者,则尝试显示文件对话框   将抛出一个异常,但如果ui在搞乱之前被设置则不会   过滤器。也许有可能使代码更强大   这个或在文档中包含警告?

     

重现问题的步骤:   运行附加的程序:它不会炸弹。然后移动setUI   行到构造函数的底部,然后再试一次:它会。

答案 1 :(得分:1)

所以,现在注册账号:)

上述链接中的这些步骤的问题是,UI的外观和感觉是在我们的软件中全局设置的。因此,在我能够操作文件过滤器之前设置UI。

编辑:错误地理解了复制代码。示例如上所述。感谢。

答案 2 :(得分:0)

似乎解决方法说明尝试在操作过滤器之前设置UI。这不起作用吗?

如果这不起作用,是否可以在设置UI的同一点创建被操纵的FileFilters的实例?