我的程序在某些情况下不会关闭指定的框架。出于某种原因,当使用run命令运行IntelliJ时,它会很好地关闭,但是在编译成jar并使用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)。
编辑:我也尝试杀死与thread.interrupt()的GUI线程,但没有改变结果。
...我想它会关闭代码到达方法结束后。我没有明确的接近线程。 – greatmastermario