2012-09-29 76 views
2

检测项的类型。在我的计划,我有一个JTextField读取用户输入。用户应该输入一个数字,然后点击一个JButton来确认输入,但是我想要知道如果用户没有输入数字,会弹出一个消息,告诉用户这是一个不正确的输入。如何实现一些东西来检测用户是否在点击JButton时输入数字?如果我需要提供更多代码,请告诉我。读取用户输入和Java中

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(""); 
    } 
}); 

回答

0

parseFloat抛出一个NumberFormatException如果通过String不包含可解析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 
} 
+0

谢谢你的帮助! – 00101100

0

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

如果使用FormattedTextFields这将是更好:formattedtextfield

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