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);
}
});
我正在完成初学者的作业 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);
}
});