Tengo alguna validación que realizo cuando el usuario hace clic en una pestaña. Si la validación == verdadero, permite que se muestre la pestaña (o para cambiar). En este momento estoy usando el evento StateChanged para validar. El problema es que, al hacer clic en una pestaña, se muestran los contenidos de las pestañas y si la validación == falso vuelve a la pestaña anterior. No quiero que cambie a menos que validación == verdadero. ¿Cómo hago esto? ¿Estoy buscando un evento incorrecto? Gracias a todosJava JTabbedPane permite que la pestaña cambie solo si es verdadero
Respuesta
Pruebe omitir JTabbedPane.setSelectedIndex (índice int).
La solución del limpiador puede ser anular 'DefaultSingleSelectionModel.setSelectedIndex (index)' y usar el modelo para JTabbedPane. Sin embargo, una solución más limpia sería anular 'DefaultSingleSelectionModel' para admitir' VetoableChangeListener'. – xmedeko
Absolutamente de acuerdo: la solución xmedeki es más segura. – Zecas
Puede usar el método tab.setEnabledAt (index, false) para desactivar la pestaña if validation = false, y tab.setEnabledAt (index, true) para volver a activarla cuando validation = true.
Editar: Al deshabilitar una pestaña se atenúa para que el usuario no pueda hacer clic en ella, lo que significa que tendrá que realizar la verificación de validación antes de que el usuario haga clic en la pestaña.
- 1. JTabbedPane personalizar pestaña buscar
- 2. ¿Hay alguna manera de ocultar la barra de pestañas de JTabbedPane si solo existe una pestaña?
- 3. JTabbedPane: acciones realizadas antes de mostrar la pestaña seleccionada
- 4. Establecer el tamaño de la pestaña en JTabbedPane
- 5. ¿Cómo comprobar si la pestaña está activa o no en JTabbedPane?
- 6. ¿Cómo informar al usuario que una pestaña específica en un JTabbedPane necesita atención?
- 7. Java: JProgressBar (o equivalente) en un título de la pestaña JTabbedPane
- 8. Comprobar si boolean es verdadero
- 9. JTabbedPane ChangeListener
- 10. Iterar a través de los componentes de pestaña en JTabbedPane
- 11. ¿Java permite tipos anulables?
- 12. CheckedListBox que permite marcar solo un elemento
- 13. Comprobando si isset y es verdadero?
- 14. Prohibir el cambio de tabulación en un JTabbedPane
- 15. Java: eliminar margen/relleno en un JTabbedPane
- 16. Devuelve verdadero solo si todos los valores se evalúan como verdadero en Ruby
- 17. ¿Cómo implementar la pestaña arrastrable usando Java Swing?
- 18. TabControl - evitando que el usuario cambie la pestaña seleccionada: MessageBox causando el error
- 19. En Java, ¿es posible verificar si una Cadena es solo ASCII?
- 20. gitolite: permite cambiar solo los archivos seleccionados
- 21. Protección de iFrame: solo permite que funcione en un dominio
- 22. jQuery Si myform.valid() es verdadero, ¿activa otra función jQuery?
- 23. ¿Cómo previene que Visual Studio cambie a la pestaña Análisis de código después de cada compilación?
- 24. Cómo evitar que Closure Compiler cambie el nombre a "verdadero", "falso" y "nulo"
- 25. Java BitSet que permite la fácil Concatenación de BitSets
- 26. Una función que solo permite N hilos concurrentes
- 27. ¿Colección que solo permite elementos únicos en .NET?
- 28. ¿Existe alguna manera de evitar que el bloqueo de fuentes cambie la familia de fuentes (y cambie solo el color)?
- 29. Ventana WPF: solo permite el cambio de tamaño horizontal
- 30. robots.txt permite solo root, no permite todo lo demás?
La forma ideal de UI/UX para hacer esto sería "desactivar" la pestaña en cuestión utilizando la llamada 'pane.setEnabledAt (index, false);' en lugar de la lógica intrincada en el evento 'stateChanged'. –
Puede acercarse a esto usando un 'CardLayout' en lugar del' JTabbedPane' - para un control completo cuando cambian las vistas. Usar una 'pestaña bloqueada' 'JTabbedPane' sería contra-intuitivo para mí. –