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

Java中如何通过内部类实现关闭GUI窗口时打印指定文本?

解决窗口关闭时打印文本的问题

嘿,我一眼就瞅到问题所在啦!你已经写对了实现WindowAdapter的内部类CloseTheWindow,但你没把这个监听器注册到你的JFrame窗口上,所以窗口关闭的时候根本触发不了你写的windowClosing方法。下面给你一步步修正:

关键修改点

  • 给JFrame添加窗口监听器,把你的内部类实例绑定到窗口上
  • 修改窗口默认关闭行为,避免程序直接跳过你的自定义逻辑就退出
  • 确保窗口设置为可见(很多人容易忘这一步)

修改后的完整代码

import java.awt.*;
import java.util.*;
import javax.swing.*;
import java.awt.event.*;

public class Sherlock extends JFrame implements ActionListener {
    JTextField find = null;
    JTextArea mainText = null;

    public Sherlock() {
        // 初始化你的组件(比如文本框、文本域)
        find = new JTextField(20);
        mainText = new JTextArea(10, 30);
        
        // 设置窗口基本属性
        setTitle("Sherlock Finder");
        setLayout(new BorderLayout());
        add(find, BorderLayout.NORTH);
        add(new JScrollPane(mainText), BorderLayout.CENTER);
        
        // 关键1:修改默认关闭操作,不让程序直接退出
        setDefaultCloseOperation(DO_NOTHING_ON_CLOSE);
        // 关键2:注册你的内部类作为窗口监听器
        addWindowListener(new CloseTheWindow());
        
        setSize(400, 300);
        setVisible(true); // 关键3:让窗口显示出来
    }

    @Override
    public void actionPerformed(ActionEvent e) {
        // 这里实现你的按钮点击等事件逻辑(如果有的话)
    }

    public static void main(String[] args) {
        // 现在只需要创建Sherlock实例就行,构造方法里已经搞定所有事
        new Sherlock();
    }

    // 你的内部类,逻辑是对的,不用改
    class CloseTheWindow extends WindowAdapter {
        public void windowClosing(WindowEvent e) {
            System.out.println("Thank you for using finder");
            System.exit(0); // 这里手动退出程序
        }
    }
}

为什么要这么改?

  1. setDefaultCloseOperation(DO_NOTHING_ON_CLOSE):JFrame默认的关闭操作是EXIT_ON_CLOSE,会直接终止程序,这样你的windowClosing方法可能还没执行就结束了。改成DO_NOTHING_ON_CLOSE后,程序会等待监听器处理关闭事件,再由你手动调用System.exit(0)退出。
  2. addWindowListener(new CloseTheWindow()):这一步是把你的关闭逻辑和窗口绑定起来,告诉窗口“当我关闭的时候,要执行这个内部类里的方法”。
  3. setVisible(true):如果忘了这一步,窗口根本不会显示出来,自然也测试不了关闭逻辑啦。

现在运行代码,关闭窗口的时候就能看到控制台打印出你想要的文本啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.11 09:22:39