Ich versuche zu verhindern, dass der Benutzer eine Registerkarte ändert, wenn die aktuelle Registerkarte nicht gültig ist. Also, wenn er auf einen Tab klickt, möchte ich überprüfen, ob der aktuelle "gültig" ist, und wenn nicht, auf dem aktuellen Tab bleiben. Ich versuchte, einen VetoableChangeListener zu verwenden, die nicht funktioniert hat, geht der Code nie in der vetoableChange Methode:Tabulatorwechsel in einem JTabbedPane verbieten
jTabbedPane.addVetoableChangeListener(new VetoableChangeListener() {
@Override
public void vetoableChange(PropertyChangeEvent evt) throws PropertyVetoException {
if (!isCurrentTabValid()) {
throw new PropertyVetoException("test", evt);
}
}
});
Wie kann ich dies richtig tun?
Danke!
Dies funktioniert hervorragend für das Wechseln von Tabs, aber wie können Sie das Schließen von Tabs verhindern? 'vetoableChange' wird aufgerufen, nachdem die Registerkarte geschlossen wurde und wenn die vorherige Registerkarte ausgewählt wurde. Ich suchte im Internet nach vetoableClose, aber keine Treffer. –
klingt nicht verwandt/erweitert - bitte posten Sie eine Frage mit einem SSCCE – kleopatra
Es ist in Ordnung, ich habe es gelöst. Ich habe eine Schaltfläche Komponente auf jeder Registerkarte hinzugefügt, um sie zu schließen. Es ruft 'JTabbedPane.remove (tabIndex)' auf. Ich habe es geschafft, es zu umgehen. Ich wähle die vorherige Registerkarte, bevor ich die aktuelle schließt, damit die 'valueChanged' Methode aufgerufen wird. –