如果 super.windowClosing(e) 不存在,代码将不会运行,并且它需要一个“;”,这会导致 IDE 将其视为不存在

问题描述 投票:0回答:1

这是我在这里提出的第一个问题,因此任何有关我提出此问题的方式的反馈都会有所帮助。

我正在编写代码,在 JFrame 关闭时将信息保存到文本文件中。当我最初编写侦听器时,Intellij 放入了额外的代码行(super.windowClosing(e)),因为最初出现错误(无法解析方法“add(WindowAdapter)”),所以我按下了修复按钮,该按钮将在那一行中,但它也导致弹出一个错误,指出它缺少分号。

//线程 4

Thread t4 = new Thread(() -> frame.add(new WindowAdapter() {

            @Override
            public void windowClosing(WindowEvent e) {
                super.windowClosing(e)  \* ; */ {

                    try {
                        FileWriter writer = new FileWriter("Registry.txt");

                        for (String key : loginRegistry.keySet()) {
                            //write key to file
                            for (String innerKey : loginRegistry.get(key).keySet()) {
                                //write innerKey to file
                                //write get(innerKey) to file
                            }
                        }
                        writer.close();
                        frame.dispose();
                        System.exit(0);

                    }catch(IOException x){x.printStackTrace();}

                    }
                }

        }));

此代码段应该将一个映射(包含字符串和映射(包含字符串和字符数组))写入文件中,以便程序再次运行时可以读取保存的信息。但程序不会运行 do 来解决该错误。

java swing intellij-idea jframe
1个回答
0
投票

frame.add(new WindowAdapter()
是无效调用,因为
JFrame
没有
add(WindowListener)
方法,相反,您应该使用
JFrame#addWindowListener
方法,例如...

frame.addWindowListener(new WindowAdapter() {
    @Override
    public void windowClosing(WindowEvent e) {
        System.out.println("Window is closing");
    }
});
© www.soinside.com 2019 - 2024. All rights reserved.