如果我们在主线程中创建Java Swing应用程序会发生什么?经验法则是我们必须在EDT中启动应用程序吗?请帮忙。
答案 0 :(得分:2)
Q1。经验法则是我们必须在EDT中启动应用程序
不是一个经验法则 - 更像是一个要求specified by the library:
一般来说,Swing不是线程安全的。除非另有说明,否则必须在事件派发线程上访问所有Swing组件和相关类。
Q2。如果我们在主线程中创建Java Swing应用程序会发生什么?
它可能有效:行为未指定。在同一页面上给出了一个例子:
如果在单独的线程上修改模型,则存在异常和可能的显示损坏的风险。
答案 1 :(得分:1)
如果我们在main中创建Java Swing应用程序会发生什么 线?经验法则是我们必须启动应用程序 EDT ??
理论上并不重要,重要的是避免在非静态类中创建GUI或void,与在主类中创建的对象进行比较
在主类中创建的对象不可直接访问,与扩展JComponents相同的问题
重要的是在Initial Thread
答案 2 :(得分:1)
我使用以下类的变体启动每个Swing应用程序:
import javax.swing.SwingUtilities;
import com.ggl.stopwatch.view.StopwatchFrame;
public class Stopwatch implements Runnable {
@Override
public void run() {
new StopwatchFrame();
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Stopwatch());
}
}