Java - TextField的验证

时间:2017-05-24 11:44:03

标签: java textfield

(已解决)问题1:我正在尝试通过检查其值来为我的2个TextFields添加一个简单的验证。但是,使用下面的代码,我认为发生的是try/catch在程序启动时调用(我使用System.out.println()代码测试),因此总是导致错误。如何在按下按钮'Finish'后才能调用它? (UNSOLVED)问题2:继续我的第一个问题,如果我的if或我的try/catch返回“错误”,我怎么能这样做? 39;,然后按下'Finish'按钮不会结束代码?

代码:

    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

2 个答案:

答案 0 :(得分:1)

首先,您必须使用.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

希望这会对你有所帮助。

答案 1 :(得分:0)

不知道这是否会有所帮助,但我制作了一个听起来像你想做的按钮

//taking input from pop up box
JTextField InputPosX = new JTextField(5);
JTextField InputNegX = new JTextField(5);
JTextField InputY = new JTextField(5);
JPanel ChangeAxisPanel = new JPanel();
ChangeAxisPanel.add(new JLabel("Max X:"));
ChangeAxisPanel.add(InputPosX);
ChangeAxisPanel.add(Box.createHorizontalStrut(15)); // a spacer
ChangeAxisPanel.add(new JLabel("Min X:"));
ChangeAxisPanel.add(InputNegX);
ChangeAxisPanel.add(Box.createHorizontalStrut(15)); // a spacer
ChangeAxisPanel.add(new JLabel("Y:"));
ChangeAxisPanel.add(InputY);


int result = JOptionPane.showConfirmDialog(null, ChangeAxisPanel, 
    "Please Enter X and Y Values", JOptionPane.OK_CANCEL_OPTION);
    //if ok is pressed
    if (result == JOptionPane.OK_OPTION) {

        if(!(InputPosX.getText().isEmpty())){

          defaultPosX=Integer.parseInt(InputPosX.getText());
        }
        if(!(InputNegX.getText().isEmpty())){

          defaultNegX=Integer.parseInt(InputNegX.getText());
        } 
        if(!(InputY.getText().isEmpty())){
          defaultY=Integer.parseInt(InputY.getText());
         }
}
}
});

大部分是从中收集的 Here它是gui输入窗口的一个很好的链接。如果您正在寻找一种更简单的方法,您可能需要查看jbutton,您可以使用它来调用此窗口

Jbutton

无论如何希望这有帮助