Java - TextField 的验证
Java - Validation of TextField
(已解决)问题 1: 我正在尝试通过检查其值向我的 2 个 TextFields 添加一个简单的验证。但是,对于下面的代码,我认为发生的事情是 try/catch
在程序启动时被调用(我用 System.out.println()
代码测试过),因此总是会导致错误。我怎样才能让它仅在按下按钮 'Finish'
后调用?
(未解决)第 2 期: 在我的第一个问题之后,如果我的 if
或我的 try/catch
returns 我怎样才能做到这一点一个 'error',然后按 '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
首先,您必须使用 .equals()
方法比较字符串。我相信,但不是 100% 确定,检查 null 是不必要的。所以,改变:
if (eventName.getText() == null || eventName.getText() == "")
至
if (eventName.getText().equals(""))
我不熟悉 Dialog
class。然而,当我需要实现这样的东西时,我喜欢使用 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。
希望对您有所帮助。
不知道这是否有帮助,但我制作了一个按钮,听起来就像您正在尝试做的那样
//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 输入 windows 它是一个很好的 link。另外,如果您正在寻找一种更简单的方法,您可能想查看 jbutton 的,您可以使用它来调用此 window
无论如何希望这对您有所帮助
(已解决)问题 1: 我正在尝试通过检查其值向我的 2 个 TextFields 添加一个简单的验证。但是,对于下面的代码,我认为发生的事情是 try/catch
在程序启动时被调用(我用 System.out.println()
代码测试过),因此总是会导致错误。我怎样才能让它仅在按下按钮 'Finish'
后调用?
(未解决)第 2 期: 在我的第一个问题之后,如果我的 if
或我的 try/catch
returns 我怎样才能做到这一点一个 'error',然后按 '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
首先,您必须使用 .equals()
方法比较字符串。我相信,但不是 100% 确定,检查 null 是不必要的。所以,改变:
if (eventName.getText() == null || eventName.getText() == "")
至
if (eventName.getText().equals(""))
我不熟悉 Dialog
class。然而,当我需要实现这样的东西时,我喜欢使用 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。
希望对您有所帮助。
不知道这是否有帮助,但我制作了一个按钮,听起来就像您正在尝试做的那样
//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 输入 windows 它是一个很好的 link。另外,如果您正在寻找一种更简单的方法,您可能想查看 jbutton 的,您可以使用它来调用此 window
无论如何希望这对您有所帮助