Java Swing窗口需要15秒才能显示

时间:2017-11-10 12:08:01

标签: java swing java-8

我开始用JFrame编写一个简单的Hello world应用程序,我注意到我创建的第一个窗口(或对Swing库的第一个引用)需要15秒才能显示。我还使用从控制台启动的已编译应用程序测试它,看看是否存在差异,并且没有。

这是我的代码:

public static void main(String args[]) {

    /* Create and display the form */
    SwingUtilities.invokeLater(new Runnable() {
        public void run() {
            long start = System.currentTimeMillis();
            new Test().setVisible(true);
            System.out.println("FORM 1: " + (System.currentTimeMillis() - start));

            start = System.currentTimeMillis();
            new Test2().setVisible(true);
            System.out.println("FORM 2: " + (System.currentTimeMillis() - start));
        }
    });
}

这里有输出:

FORM 1: 15362
FORM 2: 203

我已经阅读过有关禁用D3D for Java2D的内容,但是当我在linux(openSUSE)上工作时,它对我毫无用处。我也尝试从Oracle的JDK 1.8切换到openJDK 1.8,但它仍然没有任何区别。

我可以做些什么来加速这件事?

2 个答案:

答案 0 :(得分:0)

尝试运行以下内容:

SwingUtilities.invokeLater(new Runnable() {
    public void run() {
        long start = System.currentTimeMillis();
        new JFrame().setVisible(true);
        System.out.println("FORM 1: " + (System.currentTimeMillis() - start));
    }
});

如果它仍然需要很长时间,那么你知道它肯定是Swing - 不幸的是,如果你已经尝试过常规方法,那么你可以做的不是很多做到这一点(除了尝试使用Java 7和/或提交有关系统详细信息的错误报告之外)。This可能值得一读,但很大程度上是基于Windows,因此大部分都赢得了#。适用。

如果运行此代码的速度要快得多,那么您的代码的某些其他方面(或IDE自动生成的代码)会导致问题。<\ n / p>

答案 1 :(得分:0)

我不了解当前的Java&#34;趋势&#34;所以我不知道用JavaFX创建Java GUI应用程序,因为我上次尝试用Java创建GUI应用程序大约是5年前,然后我才知道Swing。

正如Gimby在评论中所建议的那样,我尝试了JavaFX,这解决了我的问题。