Próbuję uniemożliwić użytkownikowi zmianę karty, gdy bieżąca karta jest niepoprawna. Po kliknięciu na kartę chcę sprawdzić, czy aktualny jest "prawidłowy", a jeśli nie, pozostać na bieżącej karcie. Próbowałem użyć VetoableChangeListener który nie działa, kod nigdy nie wychodzi wewnątrz metody vetoableChange:Nie można zmienić zakładki w JTabbedPane
jTabbedPane.addVetoableChangeListener(new VetoableChangeListener() {
@Override
public void vetoableChange(PropertyChangeEvent evt) throws PropertyVetoException {
if (!isCurrentTabValid()) {
throw new PropertyVetoException("test", evt);
}
}
});
Jak mogę to zrobić poprawnie?
Dzięki!
Działa to doskonale w przypadku zmiany tabulatora, ale w jaki sposób można zawetować zamknięcie karty? 'vetoableChange' zostaje wywołane po zamknięciu karty i wybraniu poprzedniej karty. Przeszukałem internet pod kątem vetoableClose, ale bez trafień. –
Dźwięki niezwiązane/rozszerzone - proszę napisać pytanie z SSCCE – kleopatra
Jest ok, rozwiązałem to. Mam dodany komponent przycisku na każdej karcie, aby je zamknąć. Wywołuje 'JTabbedPane.remove (tabIndex)'. Udało mi się to obejść. Wybieram poprzednią zakładkę przed zamknięciem bieżącej, więc wywoływana jest metoda 'valueChanged'. –