当前位置: 首页 > 面试题库 >

JavaFX输入验证文本字段

高迪
2023-03-14
问题内容

我正在使用JavaFX和Scene Builder,并且有一个带有文本字段的表单。这些文本字段中的三个从字符串解析为双精度。

我希望它们是学校成绩,因此只能将其设置为1.0到6.0之间。不应允许用户写“ 2.34.4”之类的内容,但可以写“ 5.5”或“ 2.9”之类的内容。

验证已解析字段:

public void validate(KeyEvent event) {
    String content = event.getCharacter();
    if ("123456.".contains(content)) {
            // No numbers smaller than 1.0 or bigger than 6.0 - How?
    } else {
        event.consume();
    }
}

如何测试用户输入的值是否正确?

我已经在Stackoverflow和Google上进行了搜索,但没有找到令人满意的解决方案。


问题答案:
textField.focusedProperty().addListener((arg0, oldValue, newValue) -> {
        if (!newValue) { //when focus lost
            if(!textField.getText().matches("[1-5]\\.[0-9]|6\\.0")){
                //when it not matches the pattern (1.0 - 6.0)
                //set the textField empty
                textField.setText("");
            }
        }

    });

您还可以将模式更改为,[1-5](\.[0-9]){0,1}|6(.0){0,1}然后1,2,3,4,5,6也可以(不仅是1.0,2.0,...

更新 这是一个小型测试应用程序,允许使用值1(.00)至6(.00):

public class JavaFxSample extends Application {

@Override
public void start(Stage primaryStage) {
    primaryStage.setTitle("Enter number and hit the button");
    GridPane grid = new GridPane();
    grid.setAlignment(Pos.CENTER);
    Label label1To6 = new Label("1.0-6.0:");
    grid.add(label1To6, 0, 1);
    TextField textField1To6 = new TextField();

    textField1To6.focusedProperty().addListener((arg0, oldValue, newValue) -> {
        if (!newValue) { // when focus lost
                if (!textField1To6.getText().matches("[1-5](\\.[0-9]{1,2}){0,1}|6(\\.0{1,2}){0,1}")) {
                    // when it not matches the pattern (1.0 - 6.0)
                    // set the textField empty
                    textField1To6.setText("");
                }
            }
        });
    grid.add(textField1To6, 1, 1);
    grid.add(new Button("Hit me!"), 2, 1);
    Scene scene = new Scene(grid, 300, 275);
    primaryStage.setScene(scene);
    primaryStage.show();
}

public static void main(String[] args) {
    launch(args);
}

}


 类似资料:
  • 问题内容: 我的JavaScript代码是这样的: 看这里 : 我在文本输入中添加了必填项。但这不起作用如果文本输入为空,则当我单击“提交”时,不需要任何消息 有解决我问题的方法吗? 非常感谢你 问题答案: 您必须做三件事: 确保桌子周围有表格 移动之类的了 将按钮类型从更改为 查看演示- 小提琴

  • 我使用的是javafx文本字段。我需要输入与格式##########匹配的数字和小数### 小数不可编辑,数字可以是任意数字;不允许其他输入。并非所有数字占位符都需要填写,例如,它可能是1.2或2.22.1,甚至是1.222.222.0 我尝试使用模式匹配与正则表达式来验证更改的文本,但仅此而已;它验证输入,它不会使十进制字段成为不可编辑的字段,并且工具提示不是一个选项。我不确定还能尝试什么。 我

  • 我在验证文本框中的用户输入时遇到了一些问题,我还没有找到解决方案。 基本上,该程序是一个BMI计算器,当用户选择“计算”按钮时,我正在尝试验证用户输入的“性别”、“身高”和“体重”。以下是我到目前为止的代码: 我需要验证这些输入的原因是,例如,如果用户为“高度”输入输入一个字符串或什么都不输入,计算将无法工作,因此程序将中断。我曾想过使用某种形式的布尔变量和循环来解决这个问题,但我对如何做到这一点

  • 问题内容: 我是这个C ++世界的新手,正在尝试为数字密码编写输入验证功能。这是我到目前为止所得到的: 对于不正确的值,它工作得很好,但在有效输入时不会中断循环。知道我在这里缺少什么吗?干杯!! James Kanze脚本的ErroR: 新代码: 使用 和 验证作为字符串 感谢所有人(尤其是James Kanze)的帮助。这件事在这里很有效。 那里还有进一步改进的空间吗?干杯!! 问题答案: 这看

  • 您如何验证有效的 HTML JavaScript 即使我对表单中的其他字段使用相同的方法,对空字段的验证也不起作用。

  • 主要内容:创建文本域,TextField文本,示例-1,实例-2,实例-3用于单行文本输入。请看下面的示例 - 和字段扩展了类,它是JavaFX中所有文本控件的超类。 上面的代码生成以下结果。 创建文本域 我们可以使用类的构造函数来创建文本字段。 只是一个带有光标的文本输入框,通常我们需要一个控件来告诉文本字段的目的。以下代码创建一个控件来标记对应的文本字段是用于名称输入。然后它创建一个对象。之后,它使用HBox布局和。 使用预定义文本创建文本字段。 TextField