为什么即使使用 SwingUtilities.invokeLater 之后我的 GUI 仍然挂起?
我有一个在 EDT 中调用的 ActionListener 。我的plot()函数计算量很大,很容易需要五秒钟。它使 GUI 按预期挂起。我添加了 SwingUtilities.invokeLate…
在 EDT 中仅运行一次代码的正确方法是什么?
我有一个 Swing 应用程序,它使用 Java 线程不断执行某些操作。此操作的结果会更新 UI 中图形的内容: class ExampleThread { ... public void run() …
如何检索必须在另一个线程上计算的值
在很多情况下,线程 A 需要一个必须在线程 B 上计算的值。(最常见的是,B == EDT。)考虑这个示例: String host; SwingUtilities.invokeAndWait(new…
在事件调度线程中显示 JWindow
我想做的是在我的程序加载某些内容时出现一个小的启动屏幕。这就是我所拥有的: SplashScreen.showSplashScreen(); // Do stuff that takes time. Spl…
在 EDT 之外执行长时间运行操作的正确方法是什么?
在桌面 Java 1.5 应用程序中(它必须在许多 MacOS X 机器上运行,由于 Apple 的政策,这些机器不会看到 1.6 虚拟机)在 EDT 之外执行冗长计算的正确方…
检查线程是否需要 EDT?
我有一个用 Swing 实现的 UI。一个组件执行一些可能需要一些时间的工作,因此我使用 SwingUtilities.invokeLater。然而,我正在阅读一些旧代码,并在 …
让 Swing 刷新 JLabel 时遇到问题(显然在事件调度线程上)
我有这个动作侦听器: this.newGameButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent a) { MokkiGUI.this.…
使线程在 EDT 中的非 EDT(事件调度线程)线程上运行
我有一个在 EDT 上运行的方法,我想让它在新的(非 EDT)线程上执行某些操作。我当前的代码如下: @Override public void actionPerformed(ActionEven…
从 EDT 外部获取 Swing 组件的值
我当前的代码如下所示: final String[] value = new String[1]; SwingUtilities.invokeAndWait(new Runnable() { public void run() { value[0] = te…
将变量传递给事件调度线程
我的 GUI 锁定,因为我需要通过 EDT 更新它,但是,我还需要传递一个正在使用 GUI 更新的变量: while ((message = this.in.readLine()).startsWith("…