Ho qualche convalida che eseguo quando l'utente fa clic su una scheda. Se convalida == true, consenti alla scheda di mostrare (o di passare a). In questo momento sto usando l'evento StateChanged per convalidare. Il problema è che quando fai clic su una scheda mostra il contenuto delle schede e se la convalida == false torna alla scheda precedente. Non voglio che passi a niente se non convalida == true. Come faccio questo, sto verificando un evento sbagliato? Grazie a tuttiJava JTabbedPane consente Tab per passare solo se true
risposta
Provate a sovrascrivere JTabbedPane.setSelectedIndex (int index).
La soluzione di pulitura può essere quella di sovrascrivere 'DefaultSingleSelectionModel.setSelectedIndex (index)' e utilizzare il modello per JTabbedPane. La soluzione più pulita sarebbe quella di sovrascrivere 'DefaultSingleSelectionModel' per supportare' VetoableChangeListener'. – xmedeko
Assolutamente d'accordo: la soluzione xmedeki è saffer. – Zecas
È possibile utilizzare il metodo tab.setEnabledAt (index, false) per disabilitare la scheda se validation = false e tab.setEnabledAt (index, true) per riattivarlo quando validation = true.
Modifica: la disattivazione di una scheda viene visualizzata in grigio in modo che l'utente non possa fare clic in primo luogo, il che significa che si dovrà eseguire il controllo di convalida prima che l'utente faccia clic sulla scheda.
- 1. Java: rimuovere margine/riempimento su un JTabbedPane
- 2. Java JTabbedPane, come posso selezionare una scheda da un pulsante?
- 3. Java consente tipi nullable?
- 4. Restituisce true solo se tutti i valori restituiscono true in Ruby
- 5. C'è un modo per nascondere la barra delle schede di JTabbedPane se esiste una sola scheda?
- 6. Come nascondere personalizzato tasto tab bar quando hidesBottomBarWhenPushed è "TRUE"
- 7. se l'istruzione restituisce true
- 8. Perché java consente NPE
- 9. Come cambiare scheda in jTabbedPane facendo clic su un pulsante?
- 10. jQuery stop (true, true) per passare alla fine di tutte le animazioni in coda
- 11. PHP - Session per Tab
- 12. AutoCompleteTextView consente solo le opzioni suggerite
- 13. OneToOneField con null = True non consente campo vuoto
- 14. se l'istruzione non restituisce true
- 15. Aggiunta icona nella scheda JTabbedpane
- 16. Contenteditable che consente solo il testo semplice
- 17. Regex consente solo lettere e alcuni caratteri
- 18. Perché ParameterizedThreadStart consente solo il parametro dell'oggetto?
- 19. VB.NET: identificatore per TAB?
- 20. Finestra WPF: consente solo il ridimensionamento orizzontale
- 21. che consente solo l'accesso super utente
- 22. Fare tab per rientrare la riga corrente
- 23. Gestire eventi chiave Ctrl + Tab e Ctrl + Shift + Tab
- 24. invio di posta html se l'app consente
- 25. Java: for (;;) vs. while (true)
- 26. Per dividere solo caratteri cinesi in java
- 27. Come passare na.rm = TRUE a sapply nel calcolo della mediana?
- 28. jQuery: chiave per tasto TAB?
- 29. Istruzione mySQL condizionale. Se true UPDATE, se false INSERT
- 30. python come "negare" valore: se true restituisce false, se false restituisce true
Il modo UI/UX ideale per fare ciò sarebbe "disabilitare" la scheda in questione usando 'pane.setEnabledAt (index, false);' chiama invece di logica convoluta nell'evento 'stateChanged'. –
È possibile avvicinarsi a questo utilizzando un 'CardLayout' invece del' JTabbedPane' - per il controllo completo di quando le viste cambiano. JTabbedPane 'utilizzare una' scheda bloccata 'sarebbe contro-intuitivo per me. –