Я работаю над заданием для начинающего Java класса. Мы только в середине семестра и только что узнали о JFrames на этой неделе. Наше задание заставило нас создать GUI для программы, чтобы изменить цвета на экране с предыдущей недели, и попросить нас напечатать сообщение на консоли, сообщающее, что GUI закрылся, когда пользователь выходит из GUI. Мой текущий код печатает это сообщение как GUI, а не когда оно закрыто. Это создание JFrame происходит внутри класса c publi, называемого ColorChanger, куда импортируется 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 - это путь к go, но я не уверен, где он необходимо go, чтобы появиться ПОСЛЕ закрытия GUI. Я впервые работаю с Java (или StackOverflow, если на то пошло). Извинения за любые вопросы форматирования, et c.