为什么handleEvent()方法会抛出运行时异常?

时间:2016-03-02 09:34:13

标签: java events button runtime-error

我使用 java.awt.Frame 制作了一个GUI文件I / O应用程序。有两个按钮标有" ENTER "和" 完成"。输入按钮使程序将文本字段中的数据存储到文件,而完成按钮使程序退出。点击" ENTER"按钮由 action()方法处理,而" DONE"按钮由 handleEvent()方法处理。该程序运行并完美地完成工作但问题是每当我点击一个按钮时,终端窗口出现在GUI框架后面,显示一个长的运行时异常消息。我在整个异常消息中将几行中的一行标识为指向 handleEvent()方法中的一行(行:78 )。

See the full exception message here.(Google文档)

以下是 handleEvent() action()方法的定义。 请预测运行时异常的可能原因并帮助我解决它。谢谢。

64    public boolean action(Event event, Object o){
65        if(event.target instanceof Button){
66            if(event.arg.equals("ENTER")){
67                try{
68                    addRecord(); //calls the function to write data to the file
69                }
70                catch(Exception e){}
71            }            
72        }
73        return super.action(event,o);
74    }
...
...
76    public boolean handleEvent(Event e){
77        if(e.target instanceof Button){
78            if(e.arg.equals("DONE"))
79            System.exit(0); //exits the program
80        }
81        return super.handleEvent(e);
82    }
...
...
84    public static void main(String args[]){
85        new ClassName().prepareGUI(); //prepareGUI() setups the Frame
86    }

2 个答案:

答案 0 :(得分:0)

根据堆栈跟踪,在第78行,“' e'或者' e.arg'是空的。

请提供您在创建/设置传递给handleEvent()方法的Event对象的代码。

您可以使用debugger轻松确定此类问题的原因,并逐步查看代码,查看变量的状态。

答案 1 :(得分:0)

handleEvent()方法中抛出 NullPointerException 。由于异常不会影响程序,否则我通过使用 try-catch 块来捕获并吞下异常来解决获取该消息的问题,如下面的代码所示:

public boolean handleEvent(Event e){
    try{
        if(e.target instanceof Button){
            if(e.arg.equals("DONE"))
                System.exit(0); //exits the program
        }
    }
    catch(NullPointerException npe){} //catching and swallowing
                                     //the NullPointerException
    return super.handleEvent(e);
}

因此,我没有在 Frame 后面打开终端窗口并显示该错误消息。感谢@AndreasVogl提供的所有帮助。