Ich habe eine Validierung, die ich ausführen, wenn der Benutzer auf einen Tab klickt. Wenn validation == true, erlaube dem Tab zu zeigen (oder zu wechseln). Im Moment benutze ich das StateChanged-Ereignis zur Validierung. Das Problem ist, wenn Sie auf eine Registerkarte klicken, zeigt es die Tabs Inhalt und wenn Validierung == false es zurück zur vorherigen Registerkarte. Ich möchte nicht, dass es überhaupt umschaltet, es sei denn Validierung == wahr. Wie mache ich das, überprüfe ich nach einem falschen Ereignis? Vielen Dank alleJava JTabbedPane erlaubt Tab nur wenn true zu wechseln
Antwort
Versuchen Sie, JTabbedPane.setSelectedIndex (int-Index) zu überschreiben.
Die sauberere Lösung besteht möglicherweise darin, 'DefaultSingleSelectionModel.setSelectedIndex (index)' zu überschreiben und das Modell für JTabbedPane zu verwenden. Noch sauberere Lösung wäre, 'DefaultSingleSelectionModel' zu überschreiben, um' VetoableChangeListener' zu unterstützen. – xmedeko
Absolut stimmen: xmedeki Lösung ist saffer. – Zecas
Sie können die Methode tab.setEnabledAt (index, false) verwenden, um die Registerkarte zu inaktivieren, wenn validation = false, und tab.setEnabledAt (index, true), um sie wieder einzuschalten, wenn validation = true ist.
Bearbeiten: Wenn Sie eine Registerkarte deaktivieren, wird sie grau dargestellt, sodass der Benutzer sie nicht an erster Stelle anklicken kann. Dies bedeutet, dass Sie die Validierungsprüfung durchführen müssen, bevor der Benutzer auf die Registerkarte klickt.
- 1. Java: "Add Tab Button" für ein JTabbedPane
- 2. Gibt es eine Möglichkeit, die Tableiste von JTabbedPane auszublenden, wenn nur ein Tab existiert?
- 3. Wie schließe ich einen JTabbedPane Tab an?
- 4. Wie programmatisch Tab wechseln?
- 5. JavaFX8 Registerkarte Tab nicht wechseln
- 6. Java Threading und das JTabbedPane Dilemma
- 7. Problem mit JTabbedPane in Java
- 8. Winkelmesser auf vorherigen Tab wechseln
- 9. Git erlaubt mir, Filialen zu wechseln, ohne Änderungen zu machen
- 10. JTabbedPane zeigt sich zufällig
- 11. Javascript sollten nur, wenn Tab/Browser-Fenster fokussiert ist
- 12. JTabbedPane TabComponent Standardregisterkartenhervorhebung
- 13. Wie benutzerdefinierte Tab-Leiste Taste verstecken, wenn hidesBottomBarWhenPushed „TRUE“ ist
- 14. Von Java zu Python wechseln
- 15. CheckedListBox erlaubt nur ein Element zu prüfen
- 16. Wie können Sie Tabs in jTabbedPane durch Klicken auf eine Schaltfläche wechseln?
- 17. JTabbedPane benutzerdefinierte Komponente Layout
- 18. Firebase erlaubt nur bestimmte Eigenschaften zu setzen
- 19. Convert Wenn Anweisung zu wechseln
- 20. Set Eclipse automatisch auf Java-Perspektive zu wechseln, wenn Debug
- 21. So fügen Sie Komponente zu JTabbedPane
- 22. .drawLine nicht auf JTabbedPane Zeichnung (Java)
- 23. Hinzufügen eines JPanels aus Klasse zu JtabbedPane
- 24. Tabulatorwechsel in einem JTabbedPane verbieten
- 25. Java JTabbedPane - Aktion unmittelbar vor dem Ändern des ausgewählten Tabs
- 26. Contenteditable erlaubt nur Klartext
- 27. JTabbedPane, das null Komponenten hinzufügt
- 28. Java - Innerer Klassenkonstruktor - nur für die äußere Klasse erlaubt
- 29. ClassNotFoundException auf Galaxy Tab (nur)
- 30. Programmatically wechseln Ansicht Controller in Ansichten anzeigen Tab-Leiste Controller
Der ideale UI/UX-Weg, um dies zu tun wäre, die betreffende Registerkarte zu deaktivieren mit 'pane.setEnabledAt (index, false);' Aufruf anstelle von gewundenen Logik in 'stateChanged' Ereignis. –
Sie können dies mit einem 'CardLayout' anstatt dem' JTabbedPane' angehen, um zu kontrollieren, wann sich die Ansichten ändern. Die Verwendung eines "gesperrten Tabs" "JTabbedPane" wäre für mich kontraproduktiv. –