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

в системах Windows. Я получаю следующий NPE с FileChooser. Это известная ошибка, которую Sun еще не исправила. http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6342301

Кто-нибудь знает обходной путь, чтобы предотвратить это исключение?

Спасибо. Андре

Exception in thread "AWT-EventQueue-2" java.lang.NullPointerException at javax.swing.plaf.metal.MetalFileChooserUI$IndentIcon.getIconWidth(Unknown Source) at javax.swing.SwingUtilities.layoutCompoundLabelImpl(Unknown Source) at javax.swing.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) at javax.swing.DefaultListSelectionModel.fireValueChanged(Unknown Source) at javax.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) at javax.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.access0(Unknown Source) at javax.swing.plaf.basic.BasicComboPopup$Handler.itemStateChanged(Unknown Source) at javax.swing.JComboBox.fireItemStateChanged(Unknown Source) at javax.swing.JComboBox.selectedItemChanged(Unknown Source) at javax.swing.JComboBox.contentsChanged(Unknown Source)

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
3
0
789
3

Ответы 3

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

A DESCRIPTION OF THE PROBLEM : There appears to be an undocumented bad intereaction between explicitely setting the UI and removing all file filters, even temporarily. If the latter is done before setting the ui, trying to display a file dialog will throw an exception but not if the ui was set prior to messing with the filters. Maybe it is possible to make the code more robust against this or to include a warning in the docs?

STEPS TO FOLLOW TO REPRODUCE THE PROBLEM : Run the attached program: it will not bomb. Then move the setUI line to the bottom of the constructor and try again: it will.

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

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

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

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

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

Другие вопросы по теме