Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

345
Vistas
JavaFX: cómo vincular el campo de texto "propiedad de estilo" a la propiedad de texto que coincide con algún patrón

En mi aplicación tengo una pantalla con tres campos que necesito validar y un botón Guardar.

Enlazo el botón Guardar "deshabilitar propiedad" a la "propiedad de texto" de los campos que coincide con algún patrón (patrones simplificados en este ejemplo, no importa):

 public void initialize(){ saveNetworkBtn.disableProperty() .bind(textPropertyBindingPattern(ipInp, Pattern.compile("[0-9]{3}")) .or(textPropertyBindingPattern(subnetInp, Pattern.compile("[0-9]{3}"))) .or(textPropertyBindingPattern(gatewayInp, Pattern.compile("[0-9]{3}")))); } private BooleanBinding textPropertyBindingPattern(TextField textField, Pattern pattern ) { return Bindings.createBooleanBinding(() -> !pattern.matcher(textField.getText()).matches(), textField.textProperty()); }

Entonces ese botón de guardar está bloqueado hasta que todos los valores sean correctos: ingrese la descripción de la imagen aquí

Pero necesito resaltar los campos incorrectos también con un borde rojo como

 -fx-border-color: red;

ingrese la descripción de la imagen aquí

Mi objetivo principal es manejar esto en un solo lugar en lugar de agregar varios oyentes. ¿Es posible hacer esto de alguna manera en el código anterior o necesito agregar oyentes a cada campo?

over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

Resuelto agregando un oyente al enlace, que agrega un estilo al campo de texto recibido:

 private BooleanBinding textPropertyBindingPattern(TextField textField, Pattern pattern) { BooleanBinding binding = Bindings.createBooleanBinding(() -> !pattern.matcher(textField.getText()).matches(), textField.textProperty()); applyValidationClass(textField, binding.get()); binding.addListener((obs, oldValue, newValue) -> { applyValidationClass(textField, newValue); }); return binding ; } private void applyValidationClass(TextField textField, boolean isInvalid) { textField.pseudoClassStateChanged(PseudoClass.getPseudoClass("incorrect-value"), isInvalid); }

y 'valor incorrecto' descrito en el archivo CSS:

 TextField:incorrect-value { -fx-border-color: red; }

Visualización: https://www.screencast.com/t/4NKEjjopvaE7

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda