Java-TextField的验证

Java-TextField的验证,java,textfield,Java,Textfield,解决了问题1:我正试图通过检查其值向我的2个文本字段添加一个简单的验证。然而,对于下面的代码,我认为发生的是在程序启动时调用try/catch,我使用System.out.println代码对其进行了测试,因此总是导致错误。我如何才能使其仅在按下“完成”按钮后调用? 未解决的问题2:从我的第一期开始,如何使我的if或try/catch返回一个“错误”,然后按下“Finish”按钮不会结束代码 代码: 这是我试图学习的代码:首先,必须使用.equals方法比较字符串。我相信,但不是100%确定,检

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

代码:


这是我试图学习的代码:

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

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

我不熟悉对话课。但是,当我需要实现这样的东西时,我喜欢使用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;
        }
    }
这段代码应该指导您如何检查不同的输入,并相应地验证它们。有关可以打开的不同对话框的更多详细信息,请参阅


希望这对你有帮助。

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

//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());
         }
}
}
});
其中大部分是从美国收集的 这是一个很好的gui输入窗口链接。此外,如果您正在寻找一个更简单的方法,您可能希望查看jbutton的方法,您可以使用它来调用此窗口


无论如何,希望这有帮助

您在ActionListener中是否有此验证代码?如果您将其添加到ActionListener,并将其添加到按钮中,您应该就可以了。现在,我将打开此对话框窗口的按钮设置为实现EventHander,如果这是您的意思,您希望我更改为ActionListener。否则我不知道你的意思对不起。至于。我试过了,但还是不起作用。对于问题2,我的意思是当按下对话框上的按钮时,它将关闭对话框。如果两个文本字段没有有效的输入,我希望它不要关闭。虽然我没有尝试使用JTextField,但您的回答确实给了我解决第一个问题的提示。我必须通过执行可选的result=dialog.show和wait来检查结果;然后检查结果是否存在。谢谢
    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;
        }
    }
//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());
         }
}
}
});