问题标签 [invokelater]

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 投票
0 回答
27 浏览

java - 按钮单击后调用程序未运行

我正在使用invokeLater,但它没有按我想要的方式工作。

我希望它在单击按钮后更新 jLabel,但它不会输出到 jLabel。

我的程序找到完整的计算机名称,然后应该在同一个实例中更新 jLabel,但它根本没有更新,我不确定为什么。

我不想在这里粘贴整个课程,但如果您想查看它,这里是: http: //pastebin.com/BsU9zST4任何帮助表示赞赏。

标签称为 testLabel

0 投票
0 回答
17 浏览

java - 使用 invokeLater 在同一实例中更新值

我的程序应该搜索计算机名称并在搜索它的同一 GUI 实例中更新计算机名称值。如果我启动应用程序并搜索计算机名称并点击搜索,它不会出现在同一个例子。如果我再次点击运行,我刚刚搜索的计算机名称将出现在 GUI 的新实例的标签中。

所以基本上目前我必须启动一个新的 GUI 实例才能看到更新的计算机名称。任何帮助表示赞赏。我已经坚持了很长时间了。

相关代码:

try (BufferedReader br = new BufferedReader(newFileReader("resultofbatch.txt"))) {


你可以在这里查看完整的课程:http: //pastebin.com/8hH1TMD3

0 投票
1 回答
584 浏览

java - invokeLater 的问题

我在使用 invokeLater 更新 JLabel 值时遇到问题。我在运行invokeLater的主函数之外有一个单独的方法,但是当我单击搜索按钮更新值时,它不会在同一个gui实例中更新。我必须在 eclipse 中重新启动 gui 才能改变值。我不确定我做错了什么,因此非常感谢任何帮助。我正在运行这个方法 threadStart(); 在按钮的 actionListener 中。这是方法

这是完整的课程作为参考。


在此处输入图像描述

0 投票
1 回答
250 浏览

java - invokeLater 和 NetBeans 中的主类

在使用 NetBeans 制作新的 JFrame 项目时,我一直在浏览自动生成的代码,并在我的main方法中遇到了这个问题:

经过一番阅读,我开始了解 invokeLater 的必要性,以便在 EDT 中处理 GUI 组件。也就是说,在new TestClass().setVisible(true);这里实现的 line 对我来说有点令人难以置信。我在创建一个新实例的上下文中得到它......

...但我不太了解上述run()方法中发生的事情。该代码是否创建了一个匿名类?我遇到过这个术语,但还没有完全理解。我假设它不是以我上面列出的“教科书”方式创建实例,因为没有变量(我无论如何都能看到)来引用该实例。

顺便说一句,在我看来,将您的main方法放在 JFrame 类(或任何 GUI 类,就此而言)并不理想,所以我可能会移动它。

0 投票
2 回答
894 浏览

java - 在另一个线程中调用 GUI 方法后 GUI 不更新

编辑:简化我的代码。

这是初始化 GUI 和服务器线程的主类。

现在,在我的public class TransceiverGUI extends javax.swing.JFrame implements Runnable课堂上,我有一个方法如下:

每当incomingFileRequest从 GUI 类(从任何 EventListener)中调用它时,它都能正常工作并且 GUI 会更新。

但是,当我incomingFileRequestServer类/线程调用时,代码会运行并返回正确的值,但 GUI 不会更新。

服务器线程这样调用它: // POPUP with request boolean answer = gui.incomingFileRequest(message.getMessage(), message.getFileSize(), message.senderIPAddress);

我已将更新 GUI 的代码放在一个创建新线程的块中,如下所示:

我也试过了javax.swing.SwingUtilities.invokeLater(new Runnable() { public void run() { /* update GUI code */ } });

我的问题是,如何从另一个线程调用 GUI 类中的方法(更新 GUI)?请记住,代码是完美执行的,只是没有更新 GUI 元素。

任何帮助将不胜感激。

0 投票
0 回答
41 浏览

java - 代码使用 invokeLater 执行两次。我在没有它的情况下体验绘画文物

我正在编写一个简单的纸牌游戏。当你点击一副牌时,它会抽一张牌,然后它应该会弹出一个消息对话框,说明轮到玩家 2 了。但是,被移除并涂到玩家 1 手上的牌会被 JOptionPane 消息对话框打断,它会创建一个工件(我的意思是它会涂上手中的牌,但也会在牌组和你的牌组之间随机绘制手。)在 AI 响应和 JOptionPane.showMessageDialog 上的 SwingUtilities.invokeLater 似乎是合乎逻辑的选择,但它会导致代码执行两次,让玩家 2(一个 AI)两个回合。使用 invokeAndWait 会引发错误,因为它是从 EDT 调用的,所以我没有选择。我将如何摆脱工件?http://i1065.photobucket.com/albums/u400/mfgravesjr/go%20fish%20screenshot_zpsxav4hn59.png

这是每一堆卡片中的鼠标监听器。它是我命名为 Stack 的类的一部分。mouseReleased 中有一个 if 语句,用于查看卡片是否被拖动。如果不是,它将执行 StackRuleConstraints.stackClickAction(),它在下一个代码块中定义。

这是我的 GoFish 游戏的构造函数。

您可以在此处查看完整代码:www.github.com/mfgravesjr 查看名为 projects-in-progress 的存储库。

0 投票
0 回答
51 浏览

java - 为什么JFrame一直卡到操作完成?

JFrameJButton“中止”创建了一个。

JFrame显示了操作的状态。

假设该函数operation()包含我们要运行的操作的代码。

在运行函数代码时,operation()我无法单击JButton“中止”,因为它JFrame被卡住了。

因此,我认为原因可能是事件调度程序,因此我尝试使用以下方法解决invokeLater问题SwingUtilities

但是在JFrame操作代码运行时仍然卡住了。我怎样才能解决这个问题?

0 投票
1 回答
253 浏览

java - 使用 JTextArea 的 invokeLater 与 invokeAndWait

我有一个在多个线程上运行的 Swing 应用程序,我在 EDT 上创建了 Swing 组件。Executor 会在某个时候启动将文本插入 JTextArea 的线程。但是,与 InvokeAndWait 不同,InvokeLater 并不总是执行附加操作。正如我收集的那样,它是异步的、非阻塞的,但仍然应该进行附加。怎么会这样?

谢谢

0 投票
1 回答
785 浏览

java - 在invokelater中调用JFileChooser两次导致程序不退出

我正在编写一个程序来从两个文本文件中收集信息以添加到数据库中的表中。为了允许用户选择他自己的文件,我创建了一个名为的非静态方法chooseFile(),该方法使用JFileChooser类来呈现一个showOpenDialog(我也尝试将它作为具有相同结果的静态方法。如果这听起来像我在猜测,你是对的——我对编程只是马马虎虎)。

我的理解是对 Swing 类的调用main()应该使用invokelater. 对于一次调用,这一切正常(JVM 成功退出)chooseFile(),但是当我向chooseFile()JVM 添加第二次调用时,它会无限期地运行。但是,chooseFile()如果我不使用invokelater. System.exit(0)在第二次调用之后添加invokelater也可以让程序正常退出。

据我所知,在所有(非守护程序)线程关闭之前,程序不会退出。但是,我认为使用的目的invokelater是将所有非线程安全的 Swing 相关活动推送到 EDT。是System.exit(0)在这里使用最佳实践还是我应该知道其他一些事情?

这是我的SSCCE:

0 投票
1 回答
34 浏览

java - JDialog lags after closing

In my code, I initialize a JDialog:

When a button in my main application is clicked, I show the dialog and then run an expensive method with the data I get from it:

My problem is that as soon as I click the button that runs dialog.setVisible( false ):

  • The dialog disappears
  • The frame completely freezes up (the progress bar state doesn't ever change)
  • After the message "Successful login." appears on the console, the frame is still frozen up
  • After around 10 seconds have passed, the frame finally repaints and all the status messages I call as part of accountModel.login() appear on it

How can I make my main window components responsive as the login code is running?

As you can see, I have the entire thing wrapped in a SwingUtilities.invokeLater() call, but that doesn't seem to be helping at all.