gpt4 book ai didi

java - 显示 Java GUI 是否需要一些特殊处理?

转载 作者:行者123 更新时间:2023-11-29 05:51:53 26 4
gpt4 key购买 nike

我正在查看 Java 中 GUI 的一些示例代码,我想知道显示 GUI 的正确方法是什么。假设为某些 GUI 编写了一个 createAndShowGUI() 方法。我看到了这样的东西:

public static void main(String[] args) {
javax.swing.SwingUtilities.invokeLater(new Runnable() {
public void run() {
createAndShowGUI();
}
});
}

在没有 javax.swing 的情况下在 main 方法的末尾简单地调用 createAndShowGUI() 会不会是错误的?或者我想我真正的问题是这里发生了什么。我熟悉线程,但我不确定为什么有必要创建一个新线程(这是这里发生的事情吗?)来显示 GUI。

最佳答案

所有与 UI(Swing 或 AWT)的交互都必须在事件调度线程的上下文中执行。

Swing(和 AWT)组件不是线程安全的,从 EDT 以外的任何线程更改它们中的任何一个都可能导致损坏的更新、绘制技巧、死锁并可能导致 VM 崩溃。众所周知,它们也很难调试。

你可能想读一读

我还应该补充一点,当 main 方法被执行时,它运行在 VM 为它创建的线程中。这保证不是 EDT,因为在需要它之前它不会开始。

这就是为什么好的 Swing 程序总是以类似 EventQueue.invokeLater 的方式开始。您也可以使用 SwingUtilities.invokeLater,但它们通常是一样的。

关于java - 显示 Java GUI 是否需要一些特殊处理?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13577451/

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