快速问题:我有一个JTextField用于用户输入,在我的焦点监听器中,当JTextField失去焦点时,如何检查JTextField中的数据是否为数字?感谢
答案 0 :(得分:10)
尝试执行Integer.parseInt(yourString)
,如果它抛出NumberFormatException
,您就会知道字符串不是有效的integer
try {
Integer.parseInt(myString);
System.out.println("An integer"):
}
catch (NumberFormatException e) {
//Not an integer
}
另一种选择是Regex:
boolean isInteger = Pattern.matches("^\d*$", myString);
答案 1 :(得分:3)
请参阅How to Use Formatted Text Fields。
如果您不想使用带格式的文本字段,那么您应该使用InputVerifier,而不是FocusListener。
您还可以使用DocumentFilter过滤输入的文字。
答案 2 :(得分:2)
public void focusLost(FocusEvent fe) {
String text = this.getText();
try {
double d = Double.parseDouble(text);
// or Integer.parseInt(text), etc.
// OK, valid number.
} catch (NumberFormatException nfe) {
// Not a number.
}
}
答案 3 :(得分:0)
我认为最好的方法是对JTextField使用KeyTyped侦听器,并检查您是否希望用户仅键入数字。这是一段代码:
private void jTextField5KeyTyped(java.awt.event.KeyEvent evt) {
//KEY TYPE FOR AGE
char c = evt.getKeyChar();
if(!(Character.isDigit(c) || (c==KeyEvent.VK_BACKSPACE) || c==KeyEvent.VK_DELETE)) {
getToolkit().beep();
evt.consume();
}
}