Validation JavaFX验证理解
我在网上发现了这段代码,它阻止用户在Validation JavaFX验证理解,validation,javafx,listener,textfield,digits,Validation,Javafx,Listener,Textfield,Digits,我在网上发现了这段代码,它阻止用户在文本字段中输入除数字以外的任何内容。我想在我的作业代码中使用它,但我不明白发生了什么。有人能帮我理解它为什么有效吗?多谢各位 valueTextField.textProperty().addListener(new ChangeListener<String>() { @Override public void changed(ObservableValue<? extends String> observ
文本字段中输入除数字以外的任何内容。我想在我的作业代码中使用它,但我不明白发生了什么。有人能帮我理解它为什么有效吗?多谢各位
valueTextField.textProperty().addListener(new ChangeListener<String>() {
@Override
public void changed(ObservableValue<? extends String> observable, String oldValue, String newValue) {
if (!newValue.matches("\\d{0,9}([\\.]\\d{0,9})?")) {
valueTextField.setText(oldValue);
}
}
});
valueTextField.textProperty().addListener(新的ChangeListener()){
@凌驾
public void changed(observeValue这可能是一种不使用regex的暴力方法。它只是尝试将输入转换为目标值。如果失败,将设置旧值(根据您的方法)
alpha.textProperty().addListener(新的ChangeListener()){
@凌驾
更改公众假期(ObservalEvalue这是一个onchange监听器,因此当值被更改时,将执行此函数。由于它是一个on change监听器,它将新值和旧值作为参数提供给您。在这种情况下,此方法使用正则表达式检查新值是否为数字。如果它不是整数,则将其设置回旧值。注意t、 虽然这可能有效,但在text
属性上使用ChangeListener
并不是过滤输入的正确方法,您应该使用。@Slaw我看到了关于TextFormatter
的内容,但找不到足够简单或清晰的示例,因为我对Java和JavaFX非常陌生。我如何允许负号(-)用于添加负值?否-在收到属性更改通知时更改属性是错误的。textformatter是一种方法
alpha.textProperty().addListener(new ChangeListener<String>() {
@Override
public void changed(ObservableValue<? extends String> observable, String oldValue, String newValue) {
Double dou = 0.0;
boolean valid = false;
try {
dou = Double.parseDouble(newValue);
if (dou >= 0 && dou <= 1) { // some conditions if you need a specific range
valid = true;
}
} catch(Exception e) {}
if (valid) {
alphaInput = dou;
Qnet.setAlpha(dou);
alpha.setText(dou.toString());
} else {
alpha.setText(oldValue);
}
}
});