Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/9.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 IDE更改后无法启动UI线程_Java_Eclipse_Swing_Intellij Idea_Jframe - Fatal编程技术网

Java IDE更改后无法启动UI线程

Java IDE更改后无法启动UI线程,java,eclipse,swing,intellij-idea,jframe,Java,Eclipse,Swing,Intellij Idea,Jframe,我将IDE从Eclipse更改为IntelliJ IDEA。新的开始抱怨我的代码 public class Controller { private OknoGlowne frame; private MenuListener menuListen = new MenuListener(this); private TabListener tabListener = new TabListener(this); public OknoGlowne getFrame() { return

我将IDE从Eclipse更改为IntelliJ IDEA。新的开始抱怨我的代码

public class Controller {
private OknoGlowne frame;
private MenuListener menuListen = new MenuListener(this);
private TabListener tabListener = new TabListener(this);

public OknoGlowne getFrame() {
    return frame;
}

public Controller(){
    EventQueue.invokeLater(new Runnable() {
        public void run() {
            try {
                frame = new OknoGlowne();
                frame.setVisible(true);             //error
                frame.addMenuListener(menuListen);
                frame.addTabListener(tabListener);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    });
}
}
所以我评论了这句话。并向UI框架的构造函数添加新行

public OknoGlowne() {
    jPanel.setVisible(true);
}
应用程序启动,但UI不再显示。IDEA以不同于Eclispe的方式创建框架。我得换一下

主要


这实际上与您的IDE没有任何关系。我打赌,如果您在eclipse中或从命令行运行它100次,您将根据系统的繁忙程度得到不同的结果

您没有看到JFrame弹出的原因是您使用的是InvokeRelater而不是invokeAndWait

invokeLater方法立即返回,此时您处于竞争状态:事件线程将首先显示EDT,还是主线程将首先退出?如果主线程先退出,那么程序将在显示任何窗口之前退出


要防止这种情况,必须使用invokeAndWait而不是invokeLater

你看到了什么错误?如果您通过命令行而不是IDE编译会发生什么?我在编译或运行时没有任何错误。应用程序启动和关闭过程已完成,退出代码为0。我没有看到主方法。你能发布一个吗?@GarryMoveOut这是线程问题。它与您的IDE无关。事实上,eclipse看起来像是以某种方式运行,这是巧合,或者是eclipse使用了与IntelliJ不同的CPU时间。尝试从命令行运行而不运行其他命令,然后尝试从命令行运行,同时使系统尽可能繁忙。无论哪种方法,解决方案都是一样的:使用invokeAndWait而不是invokeLater。我更改了它,窗口仍然不会弹出。立即启动和关闭应用程序`进程已完成,退出代码为0`@GarryMoveOut请提供一个更新的代码。确保它包含所有内容,并编辑您的问题以将其包含在内。
public class Runner {
    public static void main(String[] args) {
        new Controller();
    }
}