Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

355
Visualizações
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 Respostas
Responde à pergunta

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda