Ejemplo de comandos básicos de JTabbedPane en Java. Vamos a desactivar una pestaña de una JTabbedPane en función de su contenido y no en función del índice de las pestañas. Después activaremos y mostraremos esa pestaña junto con su contenido

Imaginemos que tenemos la siguiente ficha de la imagen.
Esta ficha ha sido elaborada por medio de las herramientas de Netbeans de diseño de interfaz y que ahora no pretendo entrar en detalle.
Simplificando esta imagen, vamos a considerar sólo dos pestañas (Datos económicos y materiales). Los componentes están inicializados:
pnlEconomicData = new es.diaple.fw.PanelAuto();
pnlEconomicData.setLayout(null);
lblCurrency.setText(«Moneda local»);
pnlEconomicData.add(lblCurrency);
lblCurrency.setBounds(30, 30, 80, 14);
pnlEconomicData.add(cmbCurrency);
cmbCurrency.setBounds(120, 20, 130, 30);
tabbedPane1.addTab(«Datos económicos», pnlEconomicData);
pnlCompaniesMaterials = new es.diaple.fw.PanelAuto();
jScrollPane1 = new javax.swing.JScrollPane();
tblCompaniesMaterials = new es.diaple.fw.Table();
pnlCompaniesMaterials.setLayout(new java.awt.BorderLayout());
tblCompaniesMaterials.setModel(new javax.swing.table.DefaultTableModel(
new Object [][] {
{null, null, null, null},
{null, null, null, null},
{null, null, null, null},
{null, null, null, null}
},
new String [] {
«Title 1», «Title 2», «Title 3», «Title 4»
}
));
jScrollPane1.setViewportView(tblCompaniesMaterials);
pnlCompaniesMaterials.add(jScrollPane1, java.awt.BorderLayout.CENTER);
tabbedPane1.addTab(«Materiales», pnlCompaniesMaterials);
Para desactivar una pestaña inicialmente:
tabbedPane1.setEnabledAt(tabbedPane1.indexOfComponent(pnlCompaniesMaterials),false);
Para reactivar una pestaña y marcarla como seleccionada en función del panel.
tabbedPane1.setEnabledAt(tabbedPane1.indexOfComponent(pnlCompaniesMaterials),true);
tabbedPane1.setSelectedIndex(tabbedPane1.indexOfComponent(pnlCompaniesMaterials));
tabbedPane1.setEnabledAt(tabbedPane1.indexOfComponent(pnlCompaniesMaterials),true);
tabbedPane1.setSelectedIndex(tabbedPane1.indexOfComponent(pnlCompaniesMaterials));
Moraleja antes de ir a dormir:
Estas funciones se pueden hacer directamente poniendo el índice que en esos momentos estamos visualizando. Ejemplo: tabbedPane1.setSelectedIndex(1). Evitar utilizarlo de esta manera. Siempre hay problemas de mantenimiento, como por ejemplo en caso de cambiar el orden de las pestañas, si añadimos una nueva pestaña, etc.