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