Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/333.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 导出带有多个jframe的JAR_Java_Jar_Export - Fatal编程技术网

Java 导出带有多个jframe的JAR

Java 导出带有多个jframe的JAR,java,jar,export,Java,Jar,Export,我知道如何导出Jar文件,以前有很多次。 在我当前的项目中,我可以很好地导出和运行它,但是只要我在项目中添加了另一个JFrame,每当我点击按钮加载它时,JFrame就不会加载,相反,JAR就会冻结。不会崩溃或其他任何东西,只是冻结。 这是一个普遍的问题吗?可以做些什么来修复它 第一帧 JFrame frame = new JFrame(); public Launcher(int id) { try { UIManager.setLookAndFeel(UIManag

我知道如何导出Jar文件,以前有很多次。 在我当前的项目中,我可以很好地导出和运行它,但是只要我在项目中添加了另一个JFrame,每当我点击按钮加载它时,JFrame就不会加载,相反,JAR就会冻结。不会崩溃或其他任何东西,只是冻结。 这是一个普遍的问题吗?可以做些什么来修复它

第一帧

JFrame frame = new JFrame();

public Launcher(int id) {
    try {
        UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
    } catch (Exception e) {
        e.printStackTrace();
    }
    frame.setUndecorated(true);
    frame.setTitle("Launcher");
    frame.setSize(new Dimension(width, height));
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.add(this);
    frame.setLocationRelativeTo(null);
    frame.setResizable(false);
    frame.setVisible(true);
    window.setLayout(null);
打开第二个JFrame的代码

if (Input.Clicked == 1) {
    config.loadConfig("res/Config/config.xml");
    frame.dispose();
    new NewLauncher();

}
NewLauncher()的代码

使用EventQueue编辑

public static void main(String[] args) {
    EventQueue.invokeLater(new Runnable()
    {
       public void run()
       {
        new Launcher(0);
       }
    });
    //new Launcher(0);
}

代码在调试器和编译器中运行良好。仍然无法在Jar中运行,我这样做是否正确?

确保您正在事件调度线程中运行UI

EventQueue.invokeLater(new Runnable() {
 // Run your code here ...
});

确保您没有在事件调度线程上执行任何耗时的任务,包括休眠或等待任何锁

确保您正在事件调度线程中运行UI

EventQueue.invokeLater(new Runnable() {
 // Run your code here ...
});

请确保您没有在事件调度线程上执行任何耗时的任务,包括睡眠或等待任何锁。它在Jar的另一端工作吗?新JFrame的代码?是的,它在编译器中运行得很好,请在“调试”代码时使用。它在Jar的另一端工作吗?新JFrame的代码?是的,它在编译器中运行得很好,在“调试”时,在创建框架之前,它会运行到任何地方,而在这些地方,你不能保证你是在刚刚编辑过的代码上运行的。很抱歉,我以前从未使用过EventQueue,无法找到有关如何正确使用它的详细信息。我是否正确使用了它?这取决于
game.start()
stopMenuThread()
正在做什么。如果它们仍然阻塞,那么它将阻止EDT处理绘制请求或处理事件…您可能希望通读一遍,并且在创建帧之前,您将无法保证在EDT上运行刚刚编辑的代码。很抱歉,我以前从未使用过EventQueue,无法找到有关如何正确使用它的详细信息。我是否正确使用了它?这取决于
game.start()
stopMenuThread()
正在做什么。如果它们仍然阻塞,那么它将阻止EDT处理绘制请求或处理事件…您可能希望通读并