读取用户输入并检测Java中的条目类型

时间:2012-09-29 23:16:15

标签: java actionlistener jtextfield

在我的程序中,我有一个JTextField读取用户输入。用户应该输入一个数字,然后单击一个JButton来确认输入,但是我希望有一个问题,如果用户没有输入数字,会出现一个弹出窗口,告诉用户输入不正确。如何在点击JButton时检测用户是否输入数字?如果我需要提供更多代码,请告诉我。

JButton okay = new JButton("OK");
JTextField dataEntry = new JTextfield();

okay.addActionListener(new ActionListener(){
    public void actionPerformed(ActionEvent e){       
        firstEntry = Float.parseFloat(dataEntry.getText());
        //want to see if it's a float, if true, run the following code
        confirm = true;
        changeText();
        dataEntry.setText("");
    }
});

2 个答案:

答案 0 :(得分:0)

如果传递的NumberFormatException不包含可解析的String,则

parseFloat会抛出float。您可以捕获此异常以检测用户是否输入了float

try {
  firstEntry = Float.parseFloat(dataEntry.getText());
} catch (NumberFormatException e) {
  // input is not a float
}

如果您不想处理异常,另一个选择是使用Scanner

Scanner scanner = new Scanner(dataEntry.getText());
if (scanner.hasNextFloat()) {
  firstEntry = scanner.nextFloat();
} else {
  // input is not a float
}

答案 1 :(得分:0)

我会避免使用异常的catch-mechanism来检查该值是否为数字,因为这是一个非常昂贵的java过程。

如果您使用FormattedTextFields:formattedtextfield

会更好

这需要一些代码,但这是一个非常优雅的解决方案。您也可以使用此概念编写自己的格式。