为什么启动程序时我的外观看起来很奇怪?

时间:2018-10-22 23:43:47

标签: java swing look-and-feel

我有两个班,Game.javaGameOver.java

Game.java
GameOver.java

当我启动程序时,这部分代码将不起作用:

try {
        UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");
    } catch (Throwable e) {
        e.printStackTrace();
    }

外观不会第一次设置,尽管运行GameOver类并按retry时外观会设置。我试图找出这个问题,但是我不知道是什么原因造成的。我的代码有什么问题,我该如何解决?

2 个答案:

答案 0 :(得分:0)

  

启动程序时,这部分代码将无法工作。

我的猜测是问题是因为您没有在事件调度线程(EDT)上执行代码。

您的部分代码在常规线程上执行,而创建组件的部分在EDT上执行。我猜想在执行GUI创建代码时未设置LAF。

所有与GUI相关的代码应在EDT上执行。

答案 1 :(得分:0)

您在一类的静态初始化器中做了太多事情。为应用创建一个类(在其中设置LAF),并为由应用类创建和显示的JFrame提供另一个类。