问题标签 [edt]
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.
emacs - Emacs Tpu-edt 仿真滚动边距启动
当我使用 tpu-edt 仿真启动 emacs 时,谁能帮我自动启用滚动边距?目前,我的 _emacs 文件(WinXP)包含以下行:
我发现 TPU 效果很好,我可以手动提供命令
然后它会提示我输入顶部和底部参数,并在我提供它们时正常工作。我尝试将 tpu-extras.el 文件中的示例行添加到 _emacs 文件中:
但我收到消息:
符号的函数定义无效:tpu-set-scroll-margin
帮助!滚动边距是有史以来最好的功能,我希望它们永远开启!
java - 带有 GUI 的 Java Swing 独立内核
我不明白如何将程序的核心与程序的 GUI 部分分开。实际上,网络上的所有示例都表明任何 GUI 操作都必须使用 SwingUtilities.invokeLater() 方法执行。
问题是我不明白如何使用此方法仅处理我的 GUI 部分以及核心和 GUI 如何进行通信。
例如,我有一个类具有一些计算的 GUI 显示的责任:
我有我的程序的核心:
我知道这种架构并不理想,但我不得不使用它。我的问题是,我是否使用 EDT 将 GUI 部分和核心部分分开?而且,如果答案是肯定的,我该怎么做?
如果可能的话,我需要 EDT 调用对使用 GUI 类的用户是透明的。
编辑:
GUI 类的以下转换是否具有预期的行为?
java - 从 EDT 线程调用非 EDT 线程上的 Future.get() 可以吗?
这是在单元测试的背景下(发生时)。
在测试结束时,无论结果如何,我都希望代码检查JFileChooser
对话框的存在(可见性)......如果可见,则将其关闭。
当然,有不同的方法可以解除对话,但为了模仿人类行为(并举一个我在这里关心的问题的例子),我选择使用java.awt.Robot
. 后者的方法应该在非 EDT 线程中运行。
事实上,我已经扩展了 Robot 以包含一个名为 的便捷方法type_input
,所以
先按 Alt,然后 F4,然后释放 F4,然后 Alt:就像人类关闭窗口/对话框一样。
我提交Runnable
使用invokeAndWait
,因为我不希望代码在此对话框被关闭之前运行到下一个测试。我必须在 EDT 中测试可见性和焦点。但正如我所说,Robot 方法必须在非 EDT 中运行。
get()
在 EDT 中这样进行是否有任何潜在问题?它是否可能导致 GUI 无响应?问题是,我听说该框架能够在某些条件下“启动一个新的 EDT 泵”。我不得不承认,这是我觉得自己最不了解的与 EDT 相关的问题之一……
之后
正如我在回复中所说,这不是针对手头案例的一个特别实用的解决方案:我真的想了解另一个 EDT“事件泵”是否以及何时启动并Future.get()
阻塞 EDT。正如我所说,我发现这整个方面很难理解。我使用JOptionPane
's 的静态方法(必须在 EDT 中运行,请参阅 SO ad 上的帖子)向我证明这些方法(确实会阻止 EDT!)实际上似乎并没有阻止 GUI 运行(注意不要与这些JOptionPane
s 或它们JDialog
的 s 是模态的还是非模态的混淆)。
我的理解是,这是因为“框架”随后启动了另一个“事件泵”。那么它可以在这里这样做吗?
java - 如何从挂起的 Java Swing 应用程序中解释这个线程转储?
我从挂起的java swing 应用程序中获得了以下线程转储。单击按钮后它挂起,GUI 变为空白。套接字通信和任务管理中的其他线程仍在工作(我可以从日志文件中得知)。我删除了一些不相关的输出。
#13 AW-EventQueue-0应该通过套接字发送一个命令,但在那里似乎失败了。#20和# 21是W-EventQueue-0-SharedResourceRunner与 #13 不一样?似乎没有死锁,但 GUI 没有响应并变成空白。
您是否看到有关挂起原因的任何有用信息?
java - 如何丢弃/合并重复的 AWT 事件?
当用户执行某些操作(例如单击按钮)时,我需要在 JLabel 中显示状态。此状态需要在 2 秒后消失。我为此使用以下内容。
但是,用户可能多次单击该按钮并且该计时器被多次触发。这具有不希望的效果。当一个按钮被点击 3 次时。
第 0 秒:第 1 次点击:标签在第 2 秒消失
第 1 秒:第 2 次点击:标签在第 3 秒消失
第 2 秒:第 3 次点击:标签在第 4 秒消失
在这里,标签需要在第 4 秒后消失,但会在第 2 秒后消失。因此,我希望仅在最后一个事件后延迟 2 秒隐藏此标签
为了处理这个问题,我使用了一个原子计数器。
使用 counter.incrementAndGet() 为每个任务分配一个唯一的“taskCounter”
.
只有当它是最后一个被触发的事件时才会执行上述操作。确保我的标签在最后一个事件后至少 2 秒保持可见。
有没有更好的方法来处理这个问题?
java - 应该在 EDT 中运行所有/大多数 awt.Toolkit 方法吗?
...具体来说,我正在使用 getSystemClipboard()... 然后执行诸如获取和设置内容之类的操作。
在 API 文档(Java 7)的开头它说:
如果没有明确指定相反的情况,许多 GUI 事件可能会异步传递给用户。以及许多 GUI 操作可以异步执行。这个事实意味着,如果设置了组件的状态,然后立即查询该状态,则返回值可能尚未反映请求的更改。
...我完全不清楚这与 Toolkit 的方法(和剪贴板)是否应该在 EDT 中运行有什么关系...!
axapta - 如何使用定义的 EDT 查找所有表?
如何创建一个查找包含特定扩展数据类型的所有表的作业?
我找到了这个工作,但它给了我一个错误: https ://fredshen.wordpress.com/2006/02/05/find-out-tables- contains-specific-edt/
java - 为什么要在 EDT 线程之外调用 SwingUtils.invokeAndWait() 方法?
编辑:我已经参考了这个链接,我能够理解 InvokeLater 的代码流。我的问题是,为什么这个逻辑是这样实现的?有什么具体原因吗?
以下是我的代码:
第一个问题(使用时InvokeAndWait
):
为什么它的实现方式是InvocationTargetException
在 EDT 线程中调用时抛出一个?
第二个问题(使用时InvokeLater
):
为什么 InvokeLater 允许这样做?
嗯,这是我对 EDT 线程的基本理解:
调用并等待:
- 将作业 F 放入 EDT 事件队列并等待 EDT 执行它。
- 此调用阻塞,直到所有未决的 AWT 事件(A、B、C、D、E)都已处理并(然后)执行 F,之后控制返回。
- 当且仅当提交的作业完成时返回。(控制在 F 完成后返回。)
- 从技术上讲,是同步阻塞调用。
调用后:
- 将作业 F 放入 EDT Queue ,但不等待其完成。(基本上,发布和返回调用)。
- 如果我们不关心作业的完成,我们可以使用 InvokeLater。
- 从技术上讲,异步非阻塞调用。
java - Swing 中的多个 EventDispatcher 线程
在一个大项目中,我在日志中发现在较长的运行时间后使用了多个事件调度程序线程:
日志输出来自一个检测具有相似名称的多个线程的函数。该应用程序是通过 webstart 启动的,所以一个 edt 可能在启动时用于 JavaConsole,但为什么要离开?多个 edt 是否同时处于活动状态?
java - 如何从 .dat 文件中读取并填充到 JTable 中?
我需要从scores.dat
文件中读取数据并将其弹出到一个JTable
,这里有更多信息:
Scores.dat
好像位置 =
C:\Documents\scores.dat
第一行是列名。所以需要将列名弹出到表的第一行。
Scores.dat
是动态的,通过用户操作添加/删除行。另外,我需要表格下方的“Top Scorer”按钮,单击该按钮时会突出显示得分最高的行。
这是我的代码: