Java: запретить NPE в MetalFileChooserUI $ IndentIcon.getIconWidth?

в системах Windows. Я получаю следующий NPE с FileChooser. Это известная ошибка, которую Sun еще не исправляет. 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.layoutCompoundLabelImplav (Неизвестный источник) в javax.swing.SwingUtilities.layoutCompoundLabelImplav (Неизвестный источник) SwingUtilities.layoutCompoundLabel (Неизвестный источник) в javax.swing.plaf.basic.BasicLabelUI.layoutCL (Неизвестный источник) в javax.swing.plaf.basic.BasicLabelUI.getPreferredSize (Неизвестный источник) в javax.swing.JComponent. ) в javax.swing.plaf.basic.BasicListUI.updateLayoutState (Неизвестный источник) в javax.swing.plaf.basic.BasicListUI.maybeUpdateLayoutState (Неизвестный источник) в javax.swing.plaf.basic.BasicListueChanged. (UnknownUI $ Handler) ) в javax.swing.DefaultListSelectionModel.fireValueChanged (Неизвестный источник) в javax.swing.DefaultListSelectionModel.fireValueChanged (Неизвестный источник) в javax.swing.DefaultListSelectionModel.fireValueChanged (Неизвестный источник) в java x.swing.DefaultListSelectionModel.changeSelection (Неизвестный источник) в javax.swing.DefaultListSelectionModel.changeSelection (Неизвестный источник) в javax.swing.DefaultListSelectionModel.setSelectionInterval (Неизвестный источник) в javax.swing.JList.set Неизвестный источник. swing.plaf.basic.BasicComboPopup.setListSelection (Неизвестный источник) в javax.swing.plaf.basic.BasicComboPopup.access $ 300 (Неизвестный источник) в javax.swing.plaf.basic.BasicComboPopup $ Handler.itemStateChanged (Неизвестный источник) в javax. .swing.JComboBox.fireItemStateChanged (Неизвестный источник) в javax.swing.JComboBox.selectedItemChanged (Неизвестный источник) в javax.swing.JComboBox.contentsChanged (Неизвестный источник)


person Community    schedule 19.09.2008    source источник


Ответы (3)


В отчете об ошибке, на который вы ссылаетесь, также упоминается обходной путь. Кажется, все сводится к вызову методов в определенном порядке. Вы пробовали это?

ОПИСАНИЕ ПРОБЛЕМЫ. Похоже, что существует недокументированная плохая реакция между явной настройкой пользовательского интерфейса и удалением всех фильтров файлов, даже временно. Если последнее будет выполнено до установки пользовательского интерфейса, попытка отобразить диалоговое окно с файлом вызовет исключение, но не в том случае, если пользовательский интерфейс был установлен до того, как возиться с фильтрами. Может быть, можно сделать код более устойчивым к этому или включить предупреждение в документацию?

ПОСЛЕДУЮЩИЕ ДЕЙСТВИЯ ДЛЯ ВОСПРОИЗВЕДЕНИЯ ПРОБЛЕМЫ: Запустите прилагаемую программу: она не будет бомбить. Затем переместите строку setUI в нижнюю часть конструктора и попробуйте еще раз: будет.

person Thilo    schedule 19.09.2008

Итак, теперь с зарегистрированной учетной записью :)

Проблема с этими шагами в упомянутой ссылке заключается в том, что внешний вид и, следовательно, пользовательский интерфейс настроены глобально в нашем программном обеспечении. Итак, пользовательский интерфейс настроен до того, как я смогу управлять фильтрами файлов.

Изменить: неправильно понял код для воспроизведения. Пример работает, как упоминалось. Спасибо.

person André    schedule 19.09.2008

Похоже, в описании обходного пути говорится, что вам следует попытаться настроить пользовательский интерфейс, прежде чем изменять фильтры. Это не работает?

Если это не сработает, можно ли создать экземпляр файловых фильтров, которыми вы управляете, в тот же момент, когда вы настраиваете свой пользовательский интерфейс?

person Epaga    schedule 19.09.2008