2017-04-12 25 views
0

我使用JFoenix創建一個登錄表單,我的形式做有一個文本字段和密碼字段as you see validation is okey :) 如何使用JFoenix RequiredFieldValidator啓用/禁用窗體JFXButton?

我想要做的,是要禁用/啓用自動根據該「連接器」按鈕這兩個領域

我下面的代碼

RequiredFieldValidator requiredFieldValidator ; 
private void setupValidation() { 
    requiredFieldValidator = new RequiredFieldValidator(); 
    requiredFieldValidator.setIcon(new ImageView(getClass().getResource("/icons/errors/invalid.png").toString())); 
    requiredFieldValidator.setMessage("champs obligatoire"); 

    userName.getValidators().add(requiredFieldValidator); 
    userName.focusedProperty().addListener((ObservableValue<? extends Boolean> observable, Boolean oldValue, Boolean newValue) -> { 
     if (!newValue) { 
      userName.validate(); 
     } 
    }); 

    requiredFieldValidator = new RequiredFieldValidator(); 
    requiredFieldValidator.setIcon(new ImageView(getClass().getResource("/icons/errors/invalid.png").toString())); 
    requiredFieldValidator.setMessage("champs obligatoire"); 
    password.getValidators().add(requiredFieldValidator); 
    password.focusedProperty().addListener((ObservableValue<? extends Boolean> observable, Boolean oldValue, Boolean newValue) -> { 
     if (!newValue) { 
      password.validate(); 
     } 
    }); 
    requiredFieldValidator = new RequiredFieldValidator(); 
    requiredFieldValidator.setIcon(new ImageView(getClass().getResource("/icons/errors/invalid.png").toString())); 
    requiredFieldValidator.setMessage("champs obligatoire"); 
    passwordConfirm.getValidators().add(requiredFieldValidator); 
    passwordConfirm.focusedProperty().addListener((ObservableValue<? extends Boolean> observable, Boolean oldValue, Boolean newValue) -> { 
     if (!newValue) { 
      passwordConfirm.validate(); 
     } 
    }); 

} 

如果您認爲有更好的方式來做到這一點的驗證,我接受任何建議。

謝謝。

回答

1

在javafx中,我們可以很容易地將控件屬性綁定爲可見性或無法使用。 我所做的只是將我的連接按鈕的disableProperty綁定到我所有必填字段的textProperty,並且使用邏輯表達式非常簡單。

我添加的代碼波紋管:

connect.disableProperty().bind((
      passwordConfirm.textProperty().isNotEmpty().and(
      password.textProperty().isNotEmpty()).and(
      userName.textProperty().isNotEmpty()) 
      ).not()); 

這個答案是不使用JFoenix的,因爲我想確認,但一些如何滿足我的需求。