我有两个班,Game.java
和GameOver.java
。
当我启动程序时,这部分代码将不起作用:
try {
UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");
} catch (Throwable e) {
e.printStackTrace();
}
外观不会第一次设置,尽管运行GameOver
类并按retry时外观会设置。我试图找出这个问题,但是我不知道是什么原因造成的。我的代码有什么问题,我该如何解决?
答案 0 :(得分:0)
启动程序时,这部分代码将无法工作。
我的猜测是问题是因为您没有在事件调度线程(EDT)上执行代码。
您的部分代码在常规线程上执行,而创建组件的部分在EDT上执行。我猜想在执行GUI创建代码时未设置LAF。
所有与GUI相关的代码应在EDT上执行。
答案 1 :(得分:0)
您在一类的静态初始化器中做了太多事情。为应用创建一个类(在其中设置LAF),并为由应用类创建和显示的JFrame提供另一个类。