问题标签 [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 投票
4 回答
2356 浏览

java - 使用 invokeAndWait 从 Swing 返回值

我一直在使用以下方法来创建组件并从 Swing 向/从 EDT 外部返回值。例如,以下方法可以是 , 的扩展JFrame,以创建 aJPanel并将其添加到 parent JFrame

本地 1 长度数组用于从RunnableEDT 中调用的内部传输“结果”。好吧,它看起来“有点” hacky,所以我的问题是:

  1. 这有意义吗?还有其他人在做这样的事情吗?
  2. 1-length 数组是传输结果的好方法吗?
  3. 有没有更简单的方法来做到这一点?
0 投票
3 回答
1365 浏览

java - Waiting for invokeLater() to be called

Is there a more elegant way to do what I'm doing below? That is, is there a more elegant way than polling and sleeping, polling and sleeping, and so on to know when a Runnable.run() method has been called via invokeLater()?

0 投票
4 回答
2506 浏览

java - Java 线程如何与 invokeLater() 同步?

我有一个非 GUI 线程,它使用

IBM1622GUI 的构造函数的一部分为自己实例化了一个“模型”,我的非 GUI 线程需要访问它:

我的非 GUI 线程与“稍后调用”的新 GUI 同步的正确方法是什么?(当然,如果没有同步,IBM1622GUI.getModel()只会返回 null。)

0 投票
1 回答
232 浏览

java - java - 无法将invokeAndWait中的值分配给全局字符串变量

我正在开发一个使用 java-simple-serial-connector API 读取和写入串行端口的应用程序。当我尝试读取数据字节并将它们分配给全局字符串变量 (sReader) 时,我遇到了问题。sReader 不会获取整个字符串,并且每次的长度都是随机的。我确信我收到了所有字节,因为当我将字符串 sBuffer 附加到输出 (Output.append) 时,始终会显示整个字符串。请看下面我的示例代码:

0 投票
1 回答
692 浏览

java - java - 在将任何值分配给字符串之前调用字符串返回方法

我的应用程序应该读取和写入串行端口。数据在 PortReader 类的 EventListener 中读取。我希望将此数据分配给全局字符串变量(私有字符串 sPortReaderString)以供进一步使用。全局字符串变量应该使用名为 getPortReader() 的方法返回其值,该方法只返回字符串 sPortReaderString。在应用程序的 JFrame 中,我打开串行端口连接,发送一个命令,我会自动收到来自串行设备的回复,并在标签中显示该回复输出。问题是标签总是空白的,因为从 getPortReader() 返回的 sPortReaderString 没有分配给它。我非常确定 sPortReaderString 在 EvenListener 中被分配了一个值。问题似乎是在任何值有足够的时间分配给 sPortReaderString 之前调用 JFrame 中的方法 getPortReader()。请看一下我的 otuput 和下面的代码:

以下是我得到的输出:

JFrame 中 portsMethod 的简短示例:

以下是我的 Serial Port 类的示例:

0 投票
3 回答
1022 浏览

java - Java API“如果不在 EDT 上,则在 EDT 上运行”

只是对我拥有的一些重复代码进行思考:

这不是很烦人,但似乎有一些专有功能可以为你检查这个,虽然我还没有找到它。

0 投票
1 回答
542 浏览

java - Java Swing:Swing Worker、invokeAndWait 和重叠 JLabels

嘿伙计们,我遇到了 2 个问题,都与 Java Swing 相关。我正在用 Java 开发纸牌游戏。我使用数组类型列表来保存每张卡的值,并且我有一个主要的 Play() 方法,该方法使用 invokeLater 和对我的 GUI 类的 Singleton 方法调用对 GUI 的更新。

  1. 第一个问题相当简单。我像这样使用 JLabels 在 GUI 上创建卡片;附加相关的侦听器并将它们添加到适当的面板,在本例中为“人手面板”:

    /li>

我遇到的问题是,当人手超过 7 张左右的牌时,它会创建一个更大的面板区域并在下面开始新的一排牌。我想做的是,当手达到一定大小时,卡片开始相互重叠(就像你手里拿着卡片一样)。我搞砸了 .validate() 但一无所获。您可以在这里提供的任何帮助都将受到欢迎。

  1. 我的第二个问题是关于使用 Swing Worker 来返回人类玩家的卡片选择。我读过一些关于 Swing 工作者的文章,但我不确定在我自己的游戏中实现一个的最佳方式。目前,使用控制台我有一个扫描仪,而不是选择一个 int 的输入(特定卡在 ArrayList 中的位置)。我希望通过点击玩家手中的牌来选择这个int。目前我使用:

    将卡片 JLabels 的名称设置为创建它们的 for 循环中的 int(如图所示^^),我使用:

    单击其中一张卡片时返回该整数。这也是我用来从 Play() 调用 GUI 方法的方法:

    我的问题是,如何让 Play 方法调用 GUI 类中的方法,该方法使用适当的侦听器设置手牌(现在我们称之为 GUIPlayerSelection())然后等待玩家点击一张卡片,这然后将 int 返回到代表所选卡片的主类中的 Play() 方法。我不确定如何使用调用和等待,例如,如果我使用调用和等待,它会等待卡片设置好,还是等待 mouseClicked() 方法完成?还是我必须做其他事情来确保它在手动设置后等待鼠标点击?那么我将如何返回该 int 呢?我被告知要使用摇摆工人,但如果有人能解释我如何在这种情况下实现它,那就太棒了。

先感谢您。

0 投票
1 回答
42 浏览

java - 调用和等待与子类交互

我发现了很多关于稍后调用以及在整个站点调用和等待的好例子。但是我遇到的问题是我想从一个由 main 方法调用的类中获得响应

任何人都可以提供一些主要方法调用子方法的代码,以查看它是如何使用 invoe 和 wait 方法构造的吗?提前致谢

0 投票
1 回答
299 浏览

java - GUI swing 多线程应用程序中的代码结构

我是 Java 和一般线程的新手,我在 Java 中有以下 GUI 应用程序:

  1. 在一个框架中,用户在任意位置单击鼠标,就会出现一个图像。

  2. 图像出现后,实时计时器开始运行,jLabel 根据用户在 gui 上选择的值进行自我更新,该计时器最多可以运行 5 秒。

  3. 同时播放声音片段。如果图像和声音匹配,用户点击并因此停止计时器。更新了几个 jLabel 值以反映匹配或未命中。如果不是,则用户处于空闲状态,并在计时器用完后等待图像/声音剪辑对更改。如果任一用户停止定时器或定时器用完,应用程序等待图像间时间段的预选值并转到下一个图像/声音值。

我有以下结构:

我打电话

在我的run()方法中。

Runnable的是

};

稍后初始化并startTime作为任务开始的起始参考点。

我的displayElapsed()方法很混乱,检查计时器是否通过用户输入或不活动停止。如果不是,则更新jLabel计时器的负责人。如果是这样,它会调用一个startInteraction()方法。

startInteraction()准备新的图像和声音,分别显示和播放,创建一个新线程updater并启动它。

我也有一个mouseListener监听用户输入的。它调用updater.interrupt()用户点击。

现在,问题。我知道swing是线程不安全的。这种行为肯定会出现问题,因为有时它不会立即响应用户的鼠标点击,有时会在没有适当等待量的情况下通过两个图像/声音对。标签也不会立即更新。

总的来说,结构看起来很乱,我无法从逻辑上真正解释。

我所知道的是,我每次displayElapsed做的事情都会启动一个新线程,并且每次有用户或空闲停止时我都会中断它。所以从技术上讲,每个线程应该是按顺序排列的。

必须有更好的方法来做到这一点,我想看看重写这个方法是一个好的开始。

0 投票
1 回答
210 浏览

java - Java 调用和等待?

这是一个关于 swing 实用程序的 invokeAndWait 的非常简单的问题。我听说它在单个线程上同步代码执行,但我不确定。如果是这样,我应该使用 invokeAndWait 来做到这一点吗?