gpt4 book ai didi

java - Swing:不使用 EDT 创建 GUI 安全吗?

转载 作者:行者123 更新时间:2023-12-01 12:30:26 26 4
gpt4 key购买 nike

阅读last paragraph在 Oracle 站点。

Why does not the initial thread simply create the GUI itself? Because almost all code that creates or interacts with Swing components must run on the event dispatch thread.

所以main()不应在初始线程内创建 Swing JFrame,而应使用 SwingUtilities.invokeLater() ,至少达到 Java 7。 this Q/A 中也对此进行了解释)。

SwingUtilities.invokeLater(new Runnable() {
public void run() {
createAndShowGUI();
}
});

虽然这是非常合乎逻辑的,但我们必须观察到,在教程中几乎从未这样做过。我在其他地方读到现代编译器将插入 invokeLater()在不告诉程序员的情况下调用自己。例如,当使用 Eclipse 时,这是真的吗?

是否有一些引用资料可以证实此行为?是否有不同的情况需要考虑?

最佳答案

我认为这些示例不使用 invokeLater() 因为他们不想使示例复杂化(并且他们不想解释 invokeLater() ,至少在这一点上)。

使用事件分派(dispatch)线程的问题仅适用于已经有 UI 运行的情况;大多数这些示例都是从头开始创建 UI,因此在调用 Swing 内容时它不会运行,并且在屏幕上实现某些内容之前,无需担心用户生成的事件。我想,人们仍然可能会被浇灭,但他们几乎不得不尝试这样做。

所以我想从头开始创建 UI 是它自己的特殊情况。

关于java - Swing:不使用 EDT 创建 GUI 安全吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25959139/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com