我正在完成 Java 初学者类(class)的作业。我们这个学期才过半,这周刚刚了解了 JFrames。我们的作业要求我们为程序创建一个 GUI,以更改上周屏幕上的颜色,并要求我们向控制台打印一条消息,说明当用户退出 GUI 时 GUI 已关闭。我当前的代码在 GUI 打开时而不是关闭时打印此消息。 JFrame 的创建发生在名为 ColorChanger 的公共(public)类中,其中导入了 javax.swing.JFrame。
ColorChanger 类(位于用户提示颜色下的主底部):
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 的类中:
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(或 StackOverflow)。对任何格式问题等表示歉意。
最佳答案
用线
application.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
当框架关闭时,您告诉 Java 自行关闭。要在 GUI 关闭后打印消息,您不应在 GUI 关闭时关闭 Java:
application.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
然后添加一个“退出监听器”:
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 - JFrame 关闭时如何打印消息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60516720/