Estoy tratando de evitar que el usuario cambie una pestaña cuando la pestaña actual no es válida. Entonces, cuando hace clic en una pestaña, quiero verificar si la actual es "válida", y si no, permanezca en la pestaña actual. He intentado utilizar un VetoableChangeListener que no funcionaba, el código no va dentro del método vetoableChange:Prohibir el cambio de tabulación en un JTabbedPane
jTabbedPane.addVetoableChangeListener(new VetoableChangeListener() {
@Override
public void vetoableChange(PropertyChangeEvent evt) throws PropertyVetoException {
if (!isCurrentTabValid()) {
throw new PropertyVetoException("test", evt);
}
}
});
¿Cómo se puede hacer esto correctamente I?
Gracias!
Esto funciona muy bien para el cambio de pestaña, pero ¿cómo veto el cierre de pestañas? 'vetoableChange' se invoca después de que se cierra la pestaña y cuando se selecciona la pestaña anterior. Busqué en Internet vetoableClose, pero no hits. –
suena no relacionado/extendido - por favor, publique una pregunta con un SSCCE – kleopatra
Está bien, lo resolví. Tengo un componente de botón agregado en cada pestaña para cerrarlos. Invoca 'JTabbedPane.remove (tabIndex)'. Me las arreglé para evitarlo. Estoy seleccionando la pestaña anterior antes de cerrar la actual para que se invoque el método 'valueChanged'. –