Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

334
Views
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 answers
Answer question

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!