gpt4 book ai didi

JavaFX 自定义 TextField 限制

转载 作者:行者123 更新时间:2023-11-30 06:11:54 25 4
gpt4 key购买 nike

我正在为我的数学老师申请将平面从 vector 方程形式转换为标量方程形式。

对于我的输入 TextField,我有这段代码。

TextField input = new TextField();
input.setPromptText(" (x,y,z) + q(a,b,c) + p(a,b,c) ");

我想将输入限制为给定格式(通常限制输入格式)。

我能想到的唯一方法是让线程或 Action 监听器不断调用

input.getText();

然后比较字符串的每个索引,看它是否是正确的输入类型(是数字,还是括号...等)。

这似乎是一种非常“笨拙”的做法……有谁知道更好的做法吗?也许 Java 有一些内置的方法?

最佳答案

You can use controls FX validation support to make this work :

在您的 Controller 中,您可以将 validator 设置为您的文本字段:

validationSupport = new ValidationSupport();
validationSupport.registerValidator(textField, true, ValidationForm.formatValidate);

然后您可以根据需要在单独的类中设计 validator :

public class ValidationForm {

/**
* Field allows only if correctly formatted
*/
public static Validator<String> formatValidate = (Control control, String value) -> {
boolean condition = value != null
? !value.matches("^\\({1}+[0-9]+\\,[0-9]+\\,[0-9]+\\){1}+\\+{1}"
+ "+[a-z]{1}+\\({1}+[0-9]+\\,[0-9]+\\,[0-9]+\\){1}+\\+{1}"
+ "+[a-z]{1}+\\({1}+[0-9]+\\,[0-9]+\\,[0-9]+\\){1}$") : value == null;

return ValidationResult.fromMessageIf(control, "Not a valid input \n"
+ "Should be formatted \" (x,y,z) + q(a,b,c) + p(a,b,c) \"",
Severity.ERROR, condition);
};
...

关于JavaFX 自定义 TextField 限制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33512103/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com