Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java keyEvents不适用于jTextField_Java_User Interface - Fatal编程技术网

Java keyEvents不适用于jTextField

Java keyEvents不适用于jTextField,java,user-interface,Java,User Interface,当我按下键盘上的向上和向下箭头键时,我试图更改jTextField中的值。按下“向上”时,该值会按设定值向上移动,按下“向下”时,该值会向下移动 这就是我迄今为止所做的: private void engineTxtKeyPressed(java.awt.event.KeyEvent evt) { try{ int code = evt.getKeyCode(); double value = Doubl

当我按下键盘上的向上和向下箭头键时,我试图更改jTextField中的值。按下“向上”时,该值会按设定值向上移动,按下“向下”时,该值会向下移动

这就是我迄今为止所做的:

private void engineTxtKeyPressed(java.awt.event.KeyEvent evt) {                                 

    try{
    int code = evt.getKeyCode();
    double value = Double.parseDouble(engineTxt.getText());
    if (code == KeyEvent.VK_UP) {
        value = value + 25.00;
        if ((value) > 100.00) {
            value = 100.00;
            engineTxt.setText(String.format("%.2f", value));
        }
    }
    else if(code == KeyEvent.VK_DOWN){
        value = value - 25.00;
        if ((value) < 0.00) {
            value = 0.00;
            engineTxt.setText(String.format("%.2f", value));
        }
    }
    } catch(Exception e){
        System.out.println("error");
    }
}  
列表中有很多行,基本上它会在整个过程中用解析和格式标记任何内容


问题是,我对另外10个TextFields进行了相同的解析,没有问题,但这是唯一一个带有keyEvent的。添加try/catch后,每次按下一个键,我都会收到sout()消息,程序的其余部分继续正常运行。

当您到达线路时:

double value = Double.parseDouble(engineTxt.getText());
字符串
engineText.getText()
返回
(字符串)0,00
,这会引发错误

double value = Double.parseDouble("0");
System.out.println(value);
不会提出例外

double value = Double.parseDouble("0,00");
System.out.println(value);
是的

在这条线的某个地方,有一个不应该存在的
。 由于这将起作用:

double value = Double.parseDouble("0.05");
System.out.println(value);
编辑:

正如有人在评论中所说,虽然OP没有意识到这一点,但它可能与


您的问题似乎是parseDouble()方法,而不是键盘事件。在这种情况下,输入可能是
0,00
(来自错误日志),您将在解析时获得
NumberFormatException
。是否尝试使用其他值?可能重复。其他值表示没有
(逗号),只有普通数字。文本字段中的这些值以双随机方式放置。当我在其他文本字段中解析它们时,它就起作用了。我甚至尝试使用一个简单的“0”,但每当我按下该键时,错误就会弹出。当我按下上下键以外的其他键时,它甚至会弹出。可能是重复的,还没有重复。@minarmahmud嗯,是的,可能。。。但是KeyEvent正在工作,错误是由相同的问题引起的。
double value = Double.parseDouble("0.05");
System.out.println(value);