###概要
例えば、社員コードを入力するテキストフィールドがあり、バリデーションのルールが以下の場合
- 入力は数値のみ
- 入力中に数値以外が入力されれば、即時にエラーメッセージをメッセージ表示用ラベルに反映
- エラーメッセージ表示と同時に確認ボタンをdisableにする
どのようにbindすればいいのかよくわかりません。
もしかすると、こういった場合はプロパティバインドでは実現できない??
EmployeeView.fxmlには、
- id:txtEmployeeCodeのTextField
- id:lblErrorMessageのLabel
- id:btnConfirmのButton
があります。
EmployeeView.fxmlのcontroller、EmployeeViewPresenter.javaは
以下の通りに書きました。
lang
1public class EmployeeViewPresenter implements Initializable { 2 3 @FXML 4 private TextField txtEmployeeCode; 5 6 @FXML 7 private Label lblErrorMessage; 8 9 @FXML 10 private Button btnConfirm; 11 12 @Override 13 public void initialize(URL location, ResourceBundle resources) { 14 15 //未入力チェック 16 btnConfirm.disableProperty().bind(txtEmployeeCode.textProperty().isEmpty()); 17 //数値チェックはどうやれば。。。 18 //エラーメッセージ表示は?? 19 20 } 21 22 23 //ちなみに以下の処理であれば正しくバリデーションできた 24 @FXML 25 void keyTypedValidateEmployeeCode(KeyEvent keyEvent) { 26// String input = txtEmployeeCode.getText().concat(keyEvent.getCharacter()); 27// try { 28// Integer.parseInt(input); 29// btnConfirm.setDisable(false); 30// lblErrorMessage.setText(""); 31// } catch(NumberFormatException nfe) { 32// btnConfirm.setDisable(true); 33// if(input.trim().length() > 0) { 34// lblErrorMessage.setText("数字のみ入力してください"); 35// } else { 36// lblErrorMessage.setText(""); 37// } 38// } 39 } 40 41 42 @FXML 43 public void actionConfirm (ActionEvent event) { 44 //確認画面へ遷移する処理 45 } 46
###できたこと
- 未入力時にボタンを無効に、入力時はボタンを有効にすることはできる
- txtEmployeeCodeのKeyTypedイベント処理では実現可能
###できなかったこと
プロパティバインドでの
- 入力時に数値でないときのチェックの方法がわからない
- エラー時に即時エラーメッセージを表示する方法がわからない
よろしくお願いします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/09/24 16:14
2016/09/24 16:18
2016/09/24 16:25
2016/09/24 16:30