问题标签 [event-dispatch-thread]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
479 浏览

swing - 更新 jTextArea 的问题

我正在编写一个 RMI 聊天程序。在我的程序中,我能够接收和发送消息,但我无法在 TextArea 中显示它。我不确定是什么错误。我也尝试使用事件调度方法。它没有帮助。

请帮忙...

0 投票
7 回答
349 浏览

java - 如何检索必须在另一个线程上计算的值

在很多情况下,线程 A 需要一个必须在线程 B 上计算的值。(最常见的是,B == EDT。)考虑这个例子:

当然,这不会编译,因为匿名内部类不允许写入host. 让它工作的最简单、最干净的方法是什么?我在下面列出了我所知道的方式。

0 投票
3 回答
1008 浏览

java - 在 EDT 中只运行一次代码的正确方法是什么?

我有一个使用 Java 线程不断执行某些操作的 Swing 应用程序。此操作的结果会更新 UI 中图形的内容:

我遇到的问题是 EDT 在其他操作中臃肿。在这种情况下,ExampleThread可以注册Runnable更新图形的各种实例。对于我的应用程序,这将是浪费时间,因为图表会在显示结果之前多次更新。我想要的是//update a graph每个 EDT 周期最多运行一次代码。

我的问题是:确保 aRunnable只运行一次的正确方法是什么?

0 投票
5 回答
3225 浏览

java - 为什么即使在使用 SwingUtilities.invokeLater 后我的 GUI 仍然挂起?

我有这个ActionListener在 EDT 中被调用。我的 plot() 函数计算量很大,很容易需要五秒钟。它使 GUI 按预期挂起。我添加了SwingUtilities.invokeLater代码,它仍然挂起。既然我正在为我的起伏计算生成一个单独的线程,那么 GUI 不应该响应吗?

0 投票
3 回答
7875 浏览

java - 如何捕获事件调度线程 (EDT) 异常?

我正在使用一个名为MyExceptionHandler实现的类Thread.UncaughtExceptionHandler来处理我的项目中的正常异常。

据我了解,此类无法捕获 EDT 异常,因此我尝试在main()方法中使用它来处理 EDT 异常:

但直到现在它还没有工作。例如,在初始化 JFrame 时,我从构造函数中的捆绑文件中加载其标签,如下所示:

我从捆绑文件中删除了密钥MyJFrame.title以测试异常处理程序,但它不起作用!异常通常打印在日志中。

我在这里做错了吗?

0 投票
2 回答
253 浏览

swing - 测量事件调度线程的“忙”

我想测量我的事件调度线程的“忙碌”。一种可能的想法是设置一个后台线程,该线程执行以下操作:

这个想法是测量从将事件发送到 EDT 到它被分派所需的时间。这将大致了解 UI 的响应性。

这有道理吗?有没有更标准的方法来做类似的事情?

0 投票
6 回答
1263 浏览

java - Java:使用 SwingUtilities.invokeLater() 进行调试

SwingUtilities.invokeLater()经常使用。但是,这样做会使在某些情况下难以调试:您看不到调用 的代码的堆栈跟踪SwingUtilities.invokeLater(),因为该代码已经结束了其执行。

是否有关于在调用时如何设置某种上下文(仅用于调试目的)的建议SwingUtilities.invokeLater(),以便您找出导致相关 UI 事件的原因?

0 投票
6 回答
5001 浏览

java - 如何在非事件调度线程中提示确认对话框

我有以下fun将由非事件调度线程执行。在线程的中间,我想要一个

  1. 弹出一个确认框。线程暂停其执行。
  2. 用户做出选择。
  3. 线程将获得选择并继续执行。

但是,我发现以线程安全的方式做到这一点并不容易,因为对话框应该由事件调度线程显示。我试试

当然,这不会像choice最终一样工作,我无法将对话框的返回值分配给它。

实现上述三个目标的正确方法是什么?

0 投票
2 回答
2094 浏览

java - 如何停止 Swing EDT

典型的 Swing 应用程序在开始时启动 EDT,当最后一个窗口关闭时,应用程序基本上以 System.exit 隐式或显式停止。

但我的小应用程序实际上是一个框架插件,它对 Swing 一无所知。我的插件在调用时会显示一个对话框,以便从用户那里获得一些输入并在之后退出,但框架将/必须继续运行。所以我不能打电话System.exit

但是,如果我不这样做,EDT 将继续运行,一旦框架完成,EDT 仍将运行并运行并运行......

所以我想在不杀死应用程序的情况下杀死 EDT。我怎么做?

0 投票
2 回答
1170 浏览

java - 同步呈现 JFrame

我有这个主要的 JFrame(称之为 DrinkChooser),它显示了另一个复杂的确认 JFrame(称之为 ConfirmWin)。

ConfirmWin 只有两个 JButton,确认和取消。

我想做这个:

(在 DrinkChooser 中,假设 DrinksChoosen 是一个 Drink[])

我想实现一个尽可能接近“JOptionPane 效果”的效果,即原来的 DrinkChooser 被挂起,ConfirmWin 返回用户的选择。

谢谢。