Java - 如何在关闭 JFrame 时打印消息?

Java - How to print message when a JFrame is closed?

我正在完成初学者的作业 Java class。我们这学期刚刚过半,本周刚刚了解了 JFrames。我们的任务要求我们为程序创建一个 GUI,以更改上周屏幕上的颜色,并要求我们向控制台打印一条消息,说明当用户退出 GUI 时 GUI 已关闭。我当前的代码在 GUI 打开时而不是在关闭时打印此消息。 JFrame 的创建发生在名为 ColorChanger 的 public class 中,其中导入了 javax.swing.JFrame。

ColorChanger Class(在用户提示颜色的主界面底部):

JFrame application = new JFrame();
application.setLocation(250, 250);
application.setSize(400, 150);
application.setTitle("Color Changer");
application.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
application.setLocationRelativeTo(null);
ColorPanel panel = new ColorPanel(colorAmountRed, colorAmountGreen, colorAmountBlue);
application.add(panel);

application.setVisible(true);
System.out.println("The GUI has closed.");

面板的构造函数位于名为 ColorPanel 的 class 中:

import javax.swing.JPanel;
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;

public class ColorPanel extends JPanel {
    private int red;    
    private int green;
    private int blue;

    public ColorPanel(int red, int green, int blue) {
        this.red = red;
        this.green = green;
        this.blue = blue;
        this.setBackground(new Color (this.red, this.green, this.blue));    
    }

    public void paintComponent(Graphics g) {
        super.paintComponent(g);    // Calls parent paintComponent (JPanel itself)

        int fontSize = 26;  // Font Size sent as a parameter
        g.setFont(new Font("TimesRoman", Font.PLAIN, fontSize));

        int redContrast = 0;
        if (red >= 0 && red <= 123) {
            redContrast = 255;
        }

        int greenContrast = 0;
        if (green >= 0 && green <= 123) {
            greenContrast = 255;
        }

        int blueContrast = 0;
        if (blue >= 0 && blue <= 123) {
            blueContrast = 255;
        }
        this.setForeground(new Color (redContrast, greenContrast, blueContrast));
        g.drawString("Java GUI One", getWidth() / 2 - 75, getHeight() / 2 + 10 );

    }
}   

我相当确定 println 是可行的方法,但我不确定它需要去哪里才能在 GUI 关闭后显示。这是我第一次使用 Java(或 Whosebug,就此而言)。对任何格式问题等表示歉意

同线

application.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

你告诉 Java 在框架关闭时自行关闭。要在 GUI 关闭后打印消息,您不应在 GUI 关闭时关闭 Java:

application.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);

然后添加一个"exit listener":

application.addWindowListener(new java.awt.event.WindowAdapter() {
    @Override
    public void windowClosing(java.awt.event.WindowEvent windowEvent) {
        System.out.println("GUI has been closed");
        //THEN you can exit the program
        System.exit(0);
    }
});