Java输入号码

Java输入号码,java,swing,input,numbers,Java,Swing,Input,Numbers,我做了​​一种输入数字的方法。但我希望输入是数字的,但仍然可以输入点(.)。请我的朋友帮助我。谢谢 private void jTextField1KeyTyped(java.awt.event.KeyEvent evt) { // TODO add your handling code here: FilterHanyaAngka(evt); } public void FilterHanyaAngka

我做了​​一种输入数字的方法。但我希望输入是数字的,但仍然可以输入点(.)。请我的朋友帮助我。谢谢

private void jTextField1KeyTyped(java.awt.event.KeyEvent evt) {                                     
    // TODO add your handling code here:
    FilterHanyaAngka(evt);
}

public void FilterHanyaAngka(java.awt.event.KeyEvent evt) {
    char c = evt.getKeyChar();
    if (!((Character.isDigit(c) || (c == KeyEvent.VK_BACK_SPACE) || (c == KeyEvent.VK_DELETE)))) {
            evt.consume();
    }
}

不要使用
KeyListener
来过滤文本组件的内容,您不知道
KeyListener
s将以什么顺序被通知,并且按键笔划可能已经发送到您之前的字段

相反,您应该使用
DocumentFilter

看一看,尤其是


事实上,我相信这里列出了一个数字过滤器示例…

您可以使用
ASCII
而不是Character或KeyEvent类。 看看这个:

public class ASCIITest {

public static void main(String[] args) {
    char c = '3';

    if ((c >= '0' && c <= '9') || c == '.') {
        //some code..
    }
}
public类ASCIITest{
公共静态void main(字符串[]args){
字符c='3';

如果((c>='0'&&c是的,我认为我已经找到了解决方案

public void filterDesimal(java.awt.event.KeyEvent evt) {
    char ch = evt.getKeyChar();
    if (!((ch == '.') ||
            (ch ==  '0') ||
            (ch ==  '1') ||
            (ch ==  '2') ||
            (ch ==  '3') ||
            (ch ==  '4') ||
            (ch ==  '5')||
            (ch ==  '6') ||
            (ch ==  '7') ||
            (ch ==  '8') ||
            (ch ==  '9') ||
            (ch ==  ',') ||
            (ch ==  KeyEvent.VK_BACK_SPACE) ||
            (ch ==  KeyEvent.VK_DELETE)
            )){
        evt.consume();
    }
}