3

Windowsシステムの場合。で次のNPEを取得しますFileChooser。これは既知のバグであり、まだ太陽によって修正されていません。http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6342301

誰かがこの例外を防ぐための回避策を知っていますか?

ありがとう。アンドレ

スレッド"AWT-EventQueue-2"の例外javax.swing.plaf.metal.MetalFileChooserUI$IndentIcon.getIconWidth(Unknown Source)at javax.swing.SwingUtilities.layoutCompoundLabelImpl(Unknown Source)atjavax.swingのjava.lang.NullPointerException。 SwingUtilities.layoutCompoundLabel(Unknown Source)at javax.swing.plaf.basic.BasicLabelUI.layoutCL(Unknown Source)at javax.swing.plaf.basic.BasicLabelUI.getPreferredSize(Unknown Source)at javax.swing.JComponent.getPreferredSize(Unknown Source )at javax.swing.plaf.basic.BasicListUI.updateLayoutState(Unknown Source)at javax.swing.plaf.basic.BasicListUI.maybeUpdateLayoutState(Unknown Source)at javax.swing.plaf.basic.BasicListUI $ Handler.valueChanged(Unknown Source )javax.swing.DefaultListSelectionModel.fireValueChanged(Unknown Source)atjavax.swing。DefaultListSelectionModel.fireValueChanged(Unknown Source)at javax.swing.DefaultListSelectionModel.fireValueChanged(Unknown Source)at javax.swing.DefaultListSelectionModel.changeSelection(Unknown Source)at javax.swing.DefaultListSelectionModel.changeSelection(Unknown Source)atjavax.swing.DefaultListSelectionModel。 setSelectionInterval(Unknown Source)at javax.swing.JList.setSelectedIndex(Unknown Source)at javax.swing.plaf.basic.BasicComboPopup.setListSelection(Unknown Source)at javax.swing.plaf.basic.BasicComboPopup.access $ 300(Unknown Source) javax.swing.plaf.basic.BasicComboPopup $ Handler.itemStateChanged(Unknown Source)at javax.swing.JComboBox.fireItemStateChanged(Unknown Source)at javax.swing.JComboBox.selectedItemChanged(Unknown Source)atjavax.swing.JComboBox。contentsChanged(不明なソース)

4

3 に答える 3

1

リンクしたバグレポートでは、回避策についても言及されています。それは、特定の順序でメソッドを呼び出すことに帰着するようです。あなたはそれを試しましたか?

問題の説明:UIを明示的に設定することと、一時的であってもすべてのファイルフィルターを削除することの間には、文書化されていない悪い相互作用があるようです。後者がUIを設定する前に行われた場合、ファイルダイアログを表示しようとすると例外がスローされますが、フィルターを操作する前にUIが設定された場合はスローされません。たぶん、これに対してコードをより堅牢にするか、ドキュメントに警告を含めることが可能ですか?

問題を再現するための手順:添付のプログラムを実行します。爆弾は発生しません。次に、setUI行をコンストラクターの一番下に移動して、再試行します。

于 2008-09-19T07:57:02.533 に答える
1

だから、今登録されたアカウントで:)

上記のリンクのこれらの手順の問題は、ルック アンド フィールとそのための UI がソフトウェアでグローバルに設定されていることです。したがって、ファイル フィルターを操作する前に UI が設定されます。

編集:再現のためのコードを誤解しました。前述のように例の作品。ありがとう。

于 2008-09-19T08:08:56.233 に答える
0

回避策の説明には、フィルターを操作する前にUIを設定する必要があると記載されているようです。これは機能しませんか?

それが機能しない場合、UIを設定しているのと同じポイントで操作されたFileFiltersのインスタンスを作成することは可能ですか?

于 2008-09-19T08:25:03.650 に答える