问题标签 [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.
swing - 是否调用Later()
我正在编写一个示例来展示 SwingUtilities.invokeLater() 的用法。我开始意识到我编写的这个简单示例(包括代码)并不保证使用 invokeLater()。我确实遇到过需要使用 invokeLater() 的时候,但我忘记了使用的地点和时间。我也明白在非 EDP 线程中我应该使用 invokeLater() 但在我的情况下我似乎不需要它并且它工作正常。我希望有人告诉我为什么我不需要在这段代码中使用 invokeLater() 。我希望我的展示代码中没有错误。
顺便说一句,我在 Linux 和 Windows 中使用 JDK 1.6 / 1.7。
谢谢。
java - 线程没有从 SwingUtilities.invokeLater 返回到主线程
我正在写我的代码。启动另一个可以在 awt 线程中调用的类的私有函数。SwingUtilities.invokeLater
我只是在我的线程类中编写该函数的代码。
但执行此控制后不会回到主线程。谁能建议正在发生的事情以及如何解决这个问题?
multithreading - 黑莓屏幕导航
我有一个屏幕名称 DownloaderScreen屏幕启动时它将开始下载一些文件,下载完成后它将自动前进到下一个屏幕。我使用以下代码。
该代码工作正常并开始下载文件,下载完成后将进入下一个屏幕。但是当没有文件要下载时,phraseList
数组长度为零,就不往前走。我的代码有什么问题?
java - 使用事件队列在main()中执行一个简单的方法
我正在开发一个由某个人作为研究项目的一部分开发的 Java 应用程序。以下是主要方法:
现在,我不明白为什么使用事件队列而不是仅仅使用
使用EventQueue有什么意义吗?
java - 在 OSGi Bundle 中使用 SwingUtilities.invokeLater 时找不到类
(编辑:问题已解决 - 请参阅最后的详细信息)
我想在 OSGi Bundle 中创建JFrame
一个Swing。WindowAdapter
当我使用 执行此操作SwingUtilities.invokeLater
时,WindowAdapter
找不到该类。没有invokeLater
它就可以工作。
我需要做什么才能WindowAdapter
在使用时发现invokeLater
?invokeLater
在 OSGi 环境中不合适吗?
细节:
我使用自定义启动器启动 Apache Felix 框架实例,安装包并启动它。我的包的启动方法如下所示:
这是 MyFrame 类:
这是我的捆绑清单:
这是我得到的堆栈跟踪:
作为一个 OSGi 新手,我尝试了几件事来修复它,但到目前为止找不到解决方案。那么为什么不在 StackOverflow 上提出我的第一个问题 :-)
编辑:
调试了半个小时后发现问题完全出在我的身上:我的代码openImpl
在 EDT 调用之前停止了 OSGi 框架。
因此 Apache Felix 框架将BundleWiringImpl
实例(参见堆栈跟踪)标记为已处理。当我openImpl
在 EDT 中被调用时,BundleWiringImpl.getClassLoader
返回,null
因为它被标记为已处置。最终这会导致 NPE。(我应该采取额外的步骤来发布我的 Felix 加载程序的 50 行,这可能会使错误变得明显。)
java - 在 UiApplication 中使用 invokeLater()
我可以在黑莓的 UiApplication 中包含我的 try catch 块和 invokeLater 语句吗?
使用invokeLater 方法的确切目的是什么?它是如何被调用的?
这是代码
java - SwingUtilities.invokeLater 未按预期工作
我正在开发一个用 Java 编写的并发画布,这将使用户认为他们正在并行绘制画布。
为了实现用户感知的并行性,我让他们创建这些 Runnable 对象,我继续使用 SwingUtilities.invokeLater() 将这些对象放入 EventQueue。
为了测试它,我使用几个线程模拟了用户,并在每次调用 invokeLater() 之间添加了一点延迟(大约 50 毫秒),以便查看它是否真的看起来像并行发生的绘图。
问题是,虽然它可以很好地处理 invokeLater() 调用之间增加的延迟,但消除延迟会导致有时正确绘制绘图,有时会部分绘制并消失,而在其他时间则不绘制。
我很困惑可能出了什么问题,所以如果有人有任何想法,请告诉我。
以下是注释掉延迟的代码:
干杯
编辑:这是所要求的 DrawLineTask 的代码。它非常简单,因为它只是 Runnable 类的扩展,它使用标准 Java 函数在给定参数处绘制一条线。
java - InvokeLater 冻结 GUI
我正在尝试使用多线程模拟一个简单的恒温器。恒温器应提高温度以达到用户要求的值,即下面代码中的“最大值”值。我有两个线程,一个负责提高温度,另一个负责降低温度。但减少的条件是它应该只在气体关闭时运行。但我在实施这个概念时遇到了问题。每次我按下向上按钮以增加所需的温度时,GUI 都会冻结。我怎么解决这个问题?
这就像一个线程持有锁并且不会释放它但是我怎么能注意到哪个呢?
java - 我应该在 SwingWorker.doInBackground() 中使用 SwingUtilities.invokeLater() 吗?
从 swing worker 与 EDT 交互的常用方法是使用 get() 方法。但我有一个很长的任务和这样的代码:
在大多数教程中,建议使用返回值从 SwingWorker 将某些内容返回到 EDT,但我可以:
java - 带有进度条的 Swing 闪屏
这是我的启动画面代码,
从我这样调用的主要方法中,
在我调用的 AppFrame 的构造函数中, splashScreen.setProgress(msg, val) 方法来更新进度条。但飞溅没有显示。它仅在最后显示帧仅显示几分之一秒,即使加载需要很长时间。但是如果我把这三行
在 invokeLater() 之外,会显示初始屏幕,并且进度条会很好地更新。我相信 GUI 更新应该在 invokeLater 中。可能是什么问题呢?
顺便说一句,AppFrame 加载了我的应用程序的各种面板。
编辑: 我的 AppFrame 的模拟如下所示。