java swing nullpointerexception visibility jtabbedpane

java - establecer la visibilidad de pestañas específicas en JTabbedPane



swing nullpointerexception (1)

¿Cómo puedo configurar algunas pestañas en un JTabbedPane invisible? Intenté usar JTabbedPane#getTabComponentAt(index).setVisible(false); , pero arroja una NullPointerException . Puedo desactivar las pestañas, pero no hacerlas invisibles.

SSCCE:

import java.awt.Dimension; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JTabbedPane; public class Main { public static void main(String[] args) { JTabbedPane tabbedPane = new JTabbedPane(); tabbedPane.setPreferredSize(new Dimension(400, 100)); for (int i = 0; i < 7; i++) tabbedPane.add("tab " + i, new JLabel("content " + i)); // this throws a NullPointerException tabbedPane.getTabComponentAt(1).setVisible(false); // this works tabbedPane.setEnabledAt(1, false); JFrame frame = new JFrame(); frame.setContentPane(tabbedPane); frame.pack(); frame.setVisible(true); } }

No puedo descubrir lo que estoy haciendo mal.


Ver el javadoc del setter correspondiente:

Establece el componente que es responsable de representar el título para la pestaña especificada. Un valor nulo significa que JTabbedPane representará el título y / o icono para la pestaña especificada. Un valor no nulo significa que el componente representará el título y JTabbedPane no representará el título y / o el ícono.

Entonces, el JTabbedPane#getTabComponentAt(index) devuelve el Component utilizado para representar la pestaña si establece alguna; de lo contrario, utiliza una etiqueta y / o un icono.

No estoy seguro de si puede hacer invisible una pestaña, pero seguro que puede eliminarlas e insertarlas . Esa podría ser una solución aceptable