Java: ¿Prevenir NPE en MetalFileChooserUI $ IndentIcon.getIconWidth?
exception nullpointerexception (3)
En el informe de error al que se vinculó, también mencionan una solución alternativa. Parece que se trata de llamar a los métodos en un orden específico. ¿Has probado eso?
UNA DESCRIPCIÓN DEL PROBLEMA: Parece existir una mala interacción no documentada entre la configuración explícita de la IU y la eliminación de todos los filtros de archivos, incluso temporalmente. Si esto último se hace antes de configurar el ui, intentar mostrar un cuadro de diálogo arrojará una excepción, pero no si el ui se configuró antes de interferir con los filtros. ¿Tal vez sea posible hacer que el código sea más robusto contra esto o incluir una advertencia en los documentos?
PASOS A SEGUIR PARA REPRODUCIR EL PROBLEMA: Ejecute el programa adjunto: no hará explosión. A continuación, mueva la línea setUI a la parte inferior del constructor e intente de nuevo: lo hará.
en sistemas Windows. Obtengo la siguiente NPE con el FileChooser
. Es un error conocido que aún no ha sido resuelto por el sol. http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6342301
¿Alguien sabe una solución para evitar esta excepción?
Gracias. André
Excepción en el hilo "AWT-EventQueue-2" java.lang.NullPointerException en javax.swing.plaf.metal.MetalFileChooserUI $ IndentIcon.getIconWidth (origen desconocido) en javax.swing.SwingUtilities.layoutCompoundLabelImpl (origen desconocido) en javax.swing. SwingUtilities.layoutCompoundLabel (Fuente desconocida) en javax.swing.plaf.basic.BasicLabelUI.layoutCL (Fuente desconocida) en javax.swing.plaf.basic.BasicLabelUI.getPreferredSize (Fuente desconocida) en javax.swing.JComponent.getPreferredSize (Fuente desconocida ) en javax.swing.plaf.basic.BasicListUI.updateLayoutState (origen desconocido) en javax.swing.plaf.basic.BasicListUI.maybeUpdateLayoutState (origen desconocido) en javax.swing.plaf.basic.BasicListUI $ Handler.valueChanged (origen desconocido ) en javax.swing.DefaultListSelectionModel.fireValueChanged (origen desconocido) en javax.swing.DefaultListSelectionModel.fireValueChanged (origen desconocido) en javax.swing.DefaultListSelectionModel.fireValueChanged (origen desconocido) en javax.swing.DefaultListSelectionModel.changeSelection (Sou desconocido rce) en javax.swing.DefaultListSelectionModel.changeSelection (origen desconocido) en javax.swing.DefaultListSelectionModel.setSelectionInterval (origen desconocido) en javax.swing.JList.setSelectedIndex (origen desconocido) en javax.swing.plaf.basic.BasicComboPopup.setListSelection (Fuente desconocida) en javax.swing.plaf.basic.BasicComboPopup.access $ 300 (Fuente desconocida) en javax.swing.plaf.basic.BasicComboPopup $ Handler.itemStateChanged (Fuente desconocida) en javax.swing.JComboBox.fireItemStateChanged (Fuente desconocida ) en javax.swing.JComboBox.selectedItemChanged (origen desconocido) en javax.swing.JComboBox.contentsChanged (fuente desconocida)
Entonces, ahora con la cuenta registrada :)
El problema con estos pasos en el enlace mencionado es que la apariencia y, por lo tanto, la interfaz de usuario se configura globalmente en nuestro software. Entonces, la IU está configurada antes de que pueda manipular los filtros de archivos.
Editar: entendí mal el código para la reproducción. Las obras ilustradas como se menciona. Gracias.
Parece que la descripción de la solución temporal indica que debe intentar establecer la interfaz de usuario antes de manipular los filtros. ¿Esto no funciona?
Si eso no funciona, ¿es posible crear una instancia de sus FileFilters manipulados en el mismo punto en que está configurando su UI?