问题标签 [invokeandwait]

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 投票
1 回答
1012 浏览

autocomplete - 使用 GlazedLists 自动完成

我正在使用 glazedlists 进行自动完成,但我想在这一点上问一些问题。我有一个用于好友列表的数组列表。可以通过单击添加或删除按钮将人员添加到好友列表或从好友列表中删除。好友列表的数据写入friend.txt,并通过使用Gson和Json从friend.txt中读取。当用户将一个人添加到列表中或从列表中删除一个人时,选定的人将从中删除或添加到friend.txt。

正如您可能从代码中理解的那样,我使用 glazedlist 进行搜索操作。我想更新元素 []。我该如何更新?当我从添加或删除按钮的控制器调用包含上述代码的方法时,我得到一个关于invokeAndWait的异常。

0 投票
4 回答
404 浏览

java - 为什么invokeAndWait() 更适合applet 而不是独立应用程序?

Java 文档说:

在 applet 中,必须使用 invokeAndWait() 从 init() 方法启动 GUI 创建任务;否则,init() 可能会在创建 GUI 之前返回,这可能会导致 Web 浏览器启动小程序时出现问题。

如果init()在创建 GUI 之前返回有什么问题?浏览器可能会出现什么样的问题?

文档进一步说:

在任何其他类型的程序中,调度 GUI 创建任务通常是初始线程所做的最后一件事,因此它使用 invokeLater() 还是 invokeAndWait() 都没有关系。

作为最后一件事完成的 GUI 创建任务如何改变任何事情?此外,它还谈到了通常invokeAndWait()的做法,如果创建 GUI 不是初始线程完成的最后一个任务,那么使用还是无关紧要invokeLater()

我想我明白他们想说什么,但我仍然想确定,因此,我发布了这个问题。提前谢谢!!

0 投票
3 回答
515 浏览

java - 调用AndWait Java

谁能告诉我这两个代码之间的实际区别是什么,因为它们都产生相同的结果?

代码1:

代码2:

我真的没有发现生成的输出之间有任何区别。但我无法理解代码。

那么任何人都可以给我invokeAndWait方法的真实示例吗?

0 投票
3 回答
2201 浏览

java - invokeAndWait 似乎导致应用程序间歇性冻结

在后台发生的进程会触发回调以提出各种问题。

在这种情况下,问题是“可以迁移您的数据吗?”,所以我不得不问用户。因为我们必须在 EDT 上完成所有 Swing 工作,所以最终看起来像这样(我只删除了注释、对我们自己的便捷方法和参数的引用allowMigration()——除此之外,其他一切都是一样的):

发生的事情是,在某些情况下,在确认或取消出现的对话框后,Swing 似乎进入了以下状态:

  • JOptionPane不再可见
  • 事件队列中没有任何待处理的内容
  • 后台线程卡在里面#invokeAndWait,等待InvocationEvent#isDispatched()返回true

我们在这里做错了什么,还是我在查看 Swing/AWT 中的错误?

唯一值得注意的另一件事是,这是模态对话框的第二级。有一个显示操作进度的模式对话框,然后此确认对话框将进度对话框作为其父项。

更新 1:这里是 EDT 当前被阻止的地方:

奇怪的是,showOptionDialog()底部是迁移提示,但Dialog#setVisible再往上是进度对话框。换句话说,有时子对话框出现在父对话框之前,也许这就是破坏 Swing 的原因。

更新 2:

事实上,我可以在测试程序中实现这一点,而无需使用我们自己的任何代码。虽然测试程序中的对话框定位不同,但挂起方式完全相同,只是重现性更高。要旨

0 投票
1 回答
576 浏览

java - 由 tree.inspect(parser) 创建的 Antlr 4 JDialog 被 JUnit 自动关闭

在 Antlr 4 中,这样的代码在一个通用的 main 函数中工作。

最后一条语句弹出一个模型 JDialog,它显示了解析器树结构。但我将代码复制到一个junit测试用例中,如下所示:

在我单击“确定”按钮之前,由“tree.inpect(parser)”创建的 JDialog 刚刚被 junt 关闭。我深入研究了“检查”功能,其主要逻辑流程如下:

为什么模型 JDialog 在我做某事之前就关闭了?我使用了“inspect”的返回值,但它仍然有效。

有什么帮助吗?

0 投票
0 回答
181 浏览

java - SwingUtilities.invokeAndWait() 之后是否需要 Suntoolkit.realSync?

要 100% 确定 java 应用程序已刷新屏幕上的所有内容,我需要调用

SunToolkit.realSync()

SwingUtilities.invokeAndWait()?

我正在里面创建我的 GUI SwingUtilities.invokeAndWait()

我想知道保证是否invokeAndWait()与保证一样令人耳目一新realSync()

0 投票
6 回答
19689 浏览

java - Java Swing:主类等到JFrame关闭

我需要一个简单的 java 应用程序的帮助,它使用两个 jframe 来获取一些输入参数。这是我的代码的草图:

对 getText() 的调用会导致 NullPointerException。我希望主课等到框架关闭,但我不知道该怎么做。我是第一次使用swing。

0 投票
1 回答
823 浏览

java - SwingWorker 中的错误处理

我的问题是一个基于理论的问题,但它确实满足了我的特定需求。

当您的 SwingWorker 抛出一个您 a) 可以预期并且 b) 需要从中恢复并继续的异常时,您会怎么做,但您想通知用户此错误已发生?如何在不违反“No Swing code from doInBackground()”规则的情况下获取预期的异常并通知用户?

考虑到这个问题,我开发了一个 SSCCE,我想提出下面的问题。

SSCCE:

SwingUtilities.invokeAndWait()在方法内调用是否有效doInBackground()我对此进行了一些线程分析,结果如下:

在此处输入图像描述

按下“开始”按钮后,SwingWorker-pool-1-thread-1线程变为绿色。然后,当满足 if 条件时,抛出错误,并显示错误对话框,线程变为黄色,线程上确实有一个绿色的“blip” AWT-EventQueue-0,表示调用了 EDT。我等了大约 10 秒钟,按下“确定”,SwingWorker线程又变绿了。

做这样的事情有什么潜在的陷阱吗?有没有人有实时通知用户计算错误的经验SwingWorker

老实说,这种方法让我很怀疑。这似乎很不正统,但我不能肯定这是否是一个坏主意。

0 投票
1 回答
129 浏览

java - 如何在 Swing 应用程序中实现循环逻辑?

我的标题有点神秘,但我想不出一个清晰的标题。

首先,两个代码片段建立一个参考点(希望我没有错别字):

输入Scanner

输入JOptionPane

因此,在上述示例中,我们要求用户输入一个固定次数的值。如何在Swing应用程序中实现相同的功能?

我可以毫无问题地创建一个JFramewith JPanel(作为它的内容窗格)并添加JLabel(带提示)和JTextField到这个面板。我还可以为ActionListener文本字段创建ActionPerformed检索值并处理它的方法。字符串处理不是一个长时间运行的任务,所以我不相信我需要一个单独的工作线程。

由于我们不能真正强迫用户做任何事情,我打算用它javax.swing.Timer来确保及时响应。

我不明白的是如何实现循环或任何其他形式的控制,以确保用户输入(和程序检索)值的确切次数。如何将这样的逻辑注入事件驱动系统?

一旦我设置了 GUI 部分并提交了它的实例以在 EDT 上调用,我似乎放弃了所有控制权。

我是否最初提交setEditable设置为的文本字段,false然后创建一个循环invokeAndWaitRunnable启用编辑(并在 中禁用它ActionPerformed)?

请指出我正确的方向。

0 投票
1 回答
591 浏览

java - 摆动线程违规

在 Swing 中调试一个奇怪的行为时,我发现了这个工具: Alex Ruiz 编辑的CheckThreadViolationRepaintManager版本。(在回答我的问题之前,您必须了解该课程的作用,谢谢)

我在我的代码中发现了线程冲突,但我不明白为什么,因为我到处都使用 SwingUtilities.invokeAndWait()。

这是导致 threadViolation 的代码。只有最后一行导致错误:

结果:

我真的不明白为什么this.setVisible(true); this.printedComponent.setVisible(true);时导致线程冲突(这是一个 JComponent );不。

谢谢,