Итак, я разрабатывал небольшую игру для школьного проекта (только что начался с Swing GUI), и у меня есть класс с именем Background, который остается открытым все время, пока разрешение не будет изменено в меню настроек.
В меню настроек я создаю новый экземпляр класса Background с новым разрешением.
Проблема в том, что я не уверен, как избавиться от старого экземпляра Background при этом.
Вот класс Background :
package hangman;
import java.awt.Dimension;
import java.awt.Toolkit;
import java.util.Scanner;
import javax.swing.JFrame;
public class Background extends javax.swing.JFrame {
private int width = 1920;
private int height = 1080;
private String resolution;
private String screenSize;
public Background(String constrScreenSize) {
initComponents();
screenSize = constrScreenSize;
getDefaultRes();
if(screenSize.equals("Fullscreen")) {
setToFullscreen();
}
else {
setToWindowed();
}
}
public Background(String constrScreenSize, String constrResolution) {
initComponents();
screenSize = constrScreenSize;
resolution = constrResolution;
parseResolution(resolution);
if(screenSize.equals("Fullscreen")) {
setToFullscreen();
}
else {
setToWindowed();
}
}
public Background() {
initComponents();
setToFullscreen();
}
//Sets the size of the background to exactly the size of the screen
public void setToFullscreen() {
dispose();
setExtendedState(JFrame.MAXIMIZED_BOTH);
setUndecorated(true);
}
public void setToWindowed() {
dispose();
setSize(width, height);
setUndecorated(false);
}
public void parseResolution(String res) {
Scanner scanRes = new Scanner(res).useDelimiter(" ");
width = scanRes.nextInt();
scanRes.next();
height = scanRes.nextInt();
}
public void getDefaultRes() {
Dimension screenDimension = Toolkit.getDefaultToolkit().getScreenSize();
width = (int) screenDimension.getWidth();
height = (int) screenDimension.getHeight();
}
public void setWidth(int width) {
this.width = width;
}
public void setHeight(int height) {
this.height = height;
}
/* Create and display the form */
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new Background().setVisible(true);
}
});
}
Затем я вызываю конструктор этого класса Settings
private void acceptSettingsButtonActionPerformed(java.awt.event.ActionEvent evt) {
new Background(screenSizeSettingComboBox.getSelectedItem().toString(), resolutionSettingComboBox.getSelectedItem().toString()).setVisible(true);
}
Очевидно, что тогда создается новый экземпляр указанного класса Background.Проблема в том, что теперь у меня осталось два экземпляра, и я хочу только новый.
Какой самый простой способ сделать это?
Любая помощь приветствуется.