You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JFrame关闭时保存数据代码报错:super.windowClosing(e)缺失分号致无法运行

问题解决步骤

核心错误修正

  1. 监听器添加方式错误:JFrame的add()方法用于添加UI组件,添加窗口监听器必须使用addWindowListener(),这是你最初遇到Cannot resolve method 'add(WindowAdapter)'的原因。
  2. 语法混乱清理:自动生成的super.windowClosing(e)后面的注释和多余大括号是语法错误的源头,需要删除多余符号并补充分号;同时移除代码中多余的嵌套大括号。
  3. 移除不必要的线程:窗口监听器无需放在单独线程中,直接绑定到JFrame即可,线程在这里属于冗余代码。

完善文件写入逻辑

原代码仅遍历了嵌套Map但未执行实际写入操作,需要补充writer.write()语句,将键值对写入文件;内层Map的字符数组值可以通过new String(charArray)转换为字符串后写入。

修正后的完整代码

// 直接给frame添加窗口监听器,无需线程
frame.addWindowListener(new WindowAdapter() {
    @Override
    public void windowClosing(WindowEvent e) {
        super.windowClosing(e); // 补充分号,清理多余注释和大括号
        try {
            FileWriter writer = new FileWriter("Registry.txt");
            // 遍历外层Map
            for (String key : loginRegistry.keySet()) {
                writer.write(key + "\n"); // 写入外层键
                // 遍历内层Map
                Map<String, char[]> innerMap = loginRegistry.get(key);
                for (String innerKey : innerMap.keySet()) {
                    writer.write("\t" + innerKey + ": " + new String(innerMap.get(innerKey)) + "\n");
                    // 用\t缩进区分层级,字符数组转字符串写入
                }
            }
            writer.close();
            frame.dispose();
            System.exit(0);
        } catch (IOException x) {
            x.printStackTrace();
        }
    }
});

内容的提问来源于stack exchange,提问作者person

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.05 09:13:31