快乐至上!~ 2019-05-24 19:38 采纳率: 50%
浏览 851
已采纳

在myeclipse中的可视化界面监听器自定义异常

求教大佬~为什么系统无法弹出消息框表明我自定义的异常"请在输入框内输入整数!"

要求:读入两个数据(Java Aplication命令行参数输入、或通过GUI输入),并计算它们的和,然后将和显示输出。编程自定义异常OnlyOneException(只有一个参数)与NoOprandException(无参数)。如果参数的数目不足,显示相应提示信息并退出程序的执行。

1.带参数异常代码
图片说明

2.无参数异常代码
图片说明

3.计算器的界面
图片说明

4.监听器代码如下:

```private void jTextField3FocusGained(java.awt.event.FocusEvent evt) {
if (jTextField1.getText().equals(null)
|| jTextField2.getText().equals(null)) {
try {
throw new OnlyOneException("请在输入框内输入整数!");
} catch (OnlyOneException e) {
JOptionPane.showMessageDialog(this, e.getMessage());
}
} else if (jTextField1.getText().equals(null)
&& jTextField2.getText().equals(null)) {
try {
throw new NoOprandException();
} catch (NoOprandException e1) {
e1.printStackTrace();
}
}

    int n1 = Integer.parseInt(jTextField1.getText());
    int n2 = Integer.parseInt(jTextField2.getText());
    int n3 = n1 + n2;
    jTextField3.setText(n3 + "");

}

private void jTextField2ActionPerformed(java.awt.event.ActionEvent evt) {
    Scanner sc = new Scanner(System.in);
    String n2 = sc.next();
    jTextField1.setText(n2);
}

private void jTextField1ActionPerformed(java.awt.event.ActionEvent evt) {
    Scanner sc = new Scanner(System.in);
    String n1 = sc.next();
    jTextField1.setText(n1);
}
  • 写回答

1条回答 默认 最新

  • 快乐至上!~ 2019-05-26 16:16
    关注

    已解决

    private void jTextField3FocusGained(java.awt.event.FocusEvent evt){
            try{
                if(this.jTextField1.getText().isEmpty()&&this.jTextField2.getText().isEmpty()){
                    throw new NoOprandException("请在两输入框内分别输入两个整数!");
                }
                if(this.jTextField1.getText().isEmpty()||this.jTextField2.getText().isEmpty()){
                    throw new OnlyOneException("请在输入框内输入另一个整数!");
                }
    
            }catch(NoOprandException e1){
                JOptionPane.showMessageDialog(this, e1.getMessage());
            }catch(OnlyOneException e){
                JOptionPane.showMessageDialog(this, e.getMessage());
            }
            int n1 = Integer.parseInt(jTextField1.getText());
            int n2 = Integer.parseInt(jTextField2.getText());
            int n3 = n1 + n2;
            jTextField3.setText(n3 + "");
        }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 metadata提取的PDF元数据,如何转换为一个Excel
  • ¥15 关于arduino编程toCharArray()函数的使用
  • ¥100 vc++混合CEF采用CLR方式编译报错
  • ¥15 coze 的插件输入飞书多维表格 app_token 后一直显示错误,如何解决?
  • ¥15 vite+vue3+plyr播放本地public文件夹下视频无法加载
  • ¥15 c#逐行读取txt文本,但是每一行里面数据之间空格数量不同
  • ¥50 如何openEuler 22.03上安装配置drbd
  • ¥20 ING91680C BLE5.3 芯片怎么实现串口收发数据
  • ¥15 无线连接树莓派,无法执行update,如何解决?(相关搜索:软件下载)
  • ¥15 Windows11, backspace, enter, space键失灵