A Swing JLabel interpreta automáticamente cualquier texto como contenido HTML, si comienza con <html>. Si el contenido de este HTML es una imagen con una URL no válida, esto hará que toda la GUI se cuelgue, ya que ImageFetche, que debería cargar esta imagen, se cerrará con un NPE.¿Cómo deshabilitar la compatibilidad automática con HTML de JLabel?
Para reproducir este problema basta con crear un JLabel de la siguiente manera
new JLabel("<html><img src='http:\\\\invalid\\url'>")
Sé que es una propiedad del cliente para evitar que el JLabel de interpretar HTML. Pero JLabel es la implementación de renderizador predeterminada para muchos componentes Swing (como JTree, JTable, etc.) lo que hace que esto sea un problema para casi cualquier aplicación Swing que permita la entrada del usuario. Entonces, en lugar de implementar toneladas de renderizador personalizado, estoy buscando una solución global para deshabilitar la interpretación de HTML.
¿Qué impide que la solución 'putClientProperty' funcione? –
putClientProperty funciona, pero hay muchos JLabels de los que uno puede no estar al tanto. Como ejemplo: crea una lista como nueva lista J (nueva cadena [] {"entrada"}). La 'entrada' será renderizada por un JLabel (vea javax.swing.DefaultListCellRenderer). No conozco ninguna solución genérica para evitar que los JLabels como este interpreten HTML. Si reemplaza 'entrada' por el HTML como se mencionó anteriormente, la GUI se bloqueará. – tigger