В некоторых случаях моя программа не будет закрывать указанный кадр. По какой-то причине он отлично закрывается при запуске IntelliJ с помощью команды run, но после компиляции в банку и упаковки с помощью Launch4J он застревает, когда я пытаюсь закрыть его программно. Здесь применяется код:JFrame.dispose не закрывающая рама
Classic.java
import javax.swing.*;
import java.io.FileNotFoundException;
import java.io.PrintStream;
import java.util.*;
import java.text.SimpleDateFormat;
import static javax.swing.SwingUtilities.invokeLater;
public class Classic extends Game{
private static JFrame gui;
...
//Starts game and opens gui
public void play() {
invokeLater(Classic::startGUI);
//startGUI() intiates gui correctly, let me know if you need it
new Thread(Classic::startGame).start();
}
...
public static void startGame() {
//Program works fine until closing window;
//Game methods and code omitted
print("Thank you for playing!" + System.lineSeparator() + "Press enter to exit.");
boolean end = false;
while (!end) {
//isInputReady() checks if user pressed enter
end = newContentPane.isInputReady();
}
gui.dispose();
}
}
Я не уверен, если это код ошибки или ошибки с Launch4J, так как это происходит только в Launch4J скомпилирован версии (не через IntelliJ или через java.exe -jar).
EDIT: Я также попытался убить поток GUI с помощью thread.interrupt(), но это не изменило результат.
... Я думал, что он закрывается после того, как код достигает конца метода. У меня нет явной нити ближе. – greatmastermario