1

如果我们在主线程中创建 Java Swing 应用程序会发生什么?经验法则是我们必须在 EDT 中启动应用程序?请帮助。

4

3 回答 3

2

Q1。经验法则是我们必须在 EDT 中启动应用程序

不是真正的经验法则 - 更像是库指定的要求:

一般来说,Swing 不是线程安全的。除非另有说明,否则所有 Swing 组件和相关类都必须在事件调度线程上访问。

Q2。如果我们在主线程中创建 Java Swing 应用程序会发生什么?

它可能有效或无效:行为未指定。在同一页面上给出了一个示例:

如果您在单独的线程上修改模型,您将面临异常风险和可能的显示损坏风险。

于 2012-11-15T17:26:38.527 回答
1

如果我们在主线程中创建 Java Swing 应用程序会发生什么?经验法则是我们必须在 EDT 中启动应用程序?

  • 理论上没关系,重要的是避免在非静态类或 void 中创建 GUI,与在主类中创建的对象相比

  • 在主类中创建的对象不能直接访问,与扩展 JComponents 相同的问题

  • 重要的是在 初始线程中创建和显示 Swing GUI

于 2012-11-15T17:35:27.490 回答
1

assyliasmKorbel有很好的答案。

我从以下类的变体开始每个 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());
    }

}
于 2012-11-15T18:18:34.980 回答