Java - 文本字段的验证

标签 java textfield

(已解决)问题 1: 我正在尝试通过检查其值来向我的 2 个文本字段添加简单的验证。但是,对于下面的代码,我认为发生的情况是在程序启动时调用 try/catch (我使用 System.out.println() 进行了测试> 代码),因此总是会导致错误。如何才能使其仅在按下按钮 'Finish' 后才调用?
(未解决)问题 2:从我的第一个问题开始,我怎样才能做到这样,如果我的 if 或我的 try/catch返回“错误”,然后按“完成”按钮不会结束代码?

代码:

    Dialog<Pair<String, Integer>> dialog = new Dialog();
    dialog.setTitle("Add new values");
    dialog.setHeaderText("Please input name and number");
    ButtonType finishButton = new ButtonType("Finish", ButtonData.OK_DONE);
    dialog.getDialogPane().getButtonTypes().addAll(finishButton, ButtonType.CANCEL);
    GridPane grid = new GridPane();
    grid.setHgap(10);
    grid.setVgap(10);

    TextField name = new TextField();
    name.setPromptText("Name");
    TextField size = new TextField();
    number.setPromptText("Number");

    grid.add(new Label("Name:"), 0, 1);
    grid.add(eventName, 1, 1);
    grid.add(new Label("Number:"), 0, 3);
    grid.add(eventSize, 1, 3);
    dialog.getDialogPane().setContent(grid);

    //verification code below
    if (eventName.getText() == null || eventName.getText() == "") {
        grid.add(new Label("Name is required!"), 0, 0);
    }
    try {
        int size = Integer.parseInt(eventSize.getText());
    } catch (NumberFormatException e) {
        grid.add(new Label("Size is required!"), 0, 1);
        System.out.println("Test failed");
    }

这是我试图学习的代码:Here

最佳答案

首先,您必须使用 .equals() 方法比较字符串。我相信,但不是 100% 确定,对 null 的检查是不必要的。所以,改变:

if (eventName.getText() == null || eventName.getText() == "")

if (eventName.getText().equals(""))

我不熟悉Dialog类。然而,当我需要实现这样的东西时,我喜欢使用 JDialog ,并将其放入 while 循环中:

    JPanel p = new JPanel(new GridLayout(2,2));
    JTextField nameField = new JTextField(5);
    JTextField numberField = new JTextField(5);
    JLabel nameLabel = new JLabel("Name");
    JLabel numberLabel = new JLabel("Number");

    p.add(nameLabel);
    p.add(nameField);
    p.add(numberLabel);
    p.add(numberField);

    while(true){
        int result = JOptionPane.showConfirmDialog(null, p, "Please enter Name and Number.", JOptionPane.OK_CANCEL_OPTION);

        if(result == JOptionPane.OK_OPTION){
            if(nameField.getText().equals("")){
                JOptionPane.showConfirmDialog(null, "Invalid input!");
            }
            else break;
        }
    }

此代码应指导您如何检查不同的输入,并相应地验证它们。请参阅JOptionPane有关您可以打开的不同对话框的更多详细信息。

希望这对您有帮助。

关于Java - 文本字段的验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44157453/

相关文章:

java - 只传递java中的有效字符

javascript - 如何禁用文本字段中的粘贴

ios - 如何将输入数据的文本字段传递到 swift 上的 url

android - 如何在 TextField Jetpack Compose 中禁用复制/粘贴/剪切?

javascript - text_field_tag 中的 Rails javascript

java - 具有递归回溯的动态树构建

java - Android 开发语言

java - EhCache BigMemory 与 RAM 磁盘上的 Diskstore

java - 参数化 JUnit 测试惰性集合

passwords - 如何在 Ext.form.TextField 中显示/隐藏密码