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

时间:2012-11-15 17:23:40

标签: java swing rule

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

3 个答案:

答案 0 :(得分:2)

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

不是一个经验法则 - 更像是一个要求specified by the library

  

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

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

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

  

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

答案 1 :(得分:1)

  

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

  • 理论上并不重要,重要的是避免在非静态类中创建GUI或void,与在主类中创建的对象进行比较

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

  • 重要的是在Initial Thread

  • 中创建和显示Swing GUI

答案 2 :(得分: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());
    }

}