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

java - 仅在整个 UI 启动时运行线程

我只想在整个 UI 正常启动时运行一个线程,即。所有组件都已paint()完成。我试过了SwingUtilities.invokeLater(),但线程仍然在整个 UI 启动之前或所有组件paint()未完成时运行。

有可能吗?

谢谢。

0 投票
4 回答
9570 浏览

java - 为什么在 main 方法中使用 SwingUtilities.invokeLater?

经过多年的 Java 编程,我总是习惯于创建main()这样的方法:

但最近我从网上研究了一些代码,有时看到这个而不是main()上面通常的用法:

我只是想知道:

  • 为什么要使用这个而不是通常的main()方式?当我试一试时,我看不出有什么不同。
  • 这两种方式有什么区别?

感谢您阅读我和您的答案。

0 投票
4 回答
404 浏览

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

Java 文档说:

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

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

文档进一步说:

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

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

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

0 投票
2 回答
1777 浏览

java - Swing GUI 应用程序应该由 Event Dispatcher 还是主线程控制?

我读过几本关于 Java 的书。在所有这些中,至少有一章教授 GUI 编程。在所有这些中,创建一个简单的表单应用程序都遵循以下逻辑:

MyFrame.java

FrameTest.java:

基本上,只需将 JFrame 子类化以创建表单并将其他组件声明为实例变量并在构造函数中初始化这些组件。然后创建另一个测试类,在该类中实例化框架子类并调用它的一些方法使其可见。

但是在并发课程中,我了解到我们有一个主线程,它在我们创建的每个应用程序中运行 main()。据我所知,当我们使用 Swing 来创建 GUI 应用程序时,我们有另一个线程(Event Dispatcher Thread)。所以如果我没记错的话,在每个基于 Swing 的 GUI 应用程序中至少有两个线程。这使得每个 GUI 应用程序都是多线程的。在我读过的一些文章和教程中,它说 Swing 不支持多线程,因此所有 GUI 组件都应该只在 Event Dispatcher Thread 中创建和修改,否则可能会出现线程干扰和内存不一致错误。

即使在 Wikipedia ( http://en.wikipedia.org/wiki/Swing_%28Java%29 ) 中最简单的示例中,它也是通过 invokeLater 方法实现的。

那么哪一种才是真正的方法呢?我哪里错了?

0 投票
0 回答
59 浏览

java - 事件派发线程

事件调度线程和任何普通线程(如主线程)在创建摆动组件和处理事件方面有什么区别,事件调度线程在主线程上的特点是什么

通过编码,这两段代码有什么区别:


EDT 做了哪些主线程或任何其他普通线程无法完成的工作?

0 投票
2 回答
3080 浏览

java - 带参数的 Swing Runnable

我想运行新的 Swing 线程并将参数传递给它们。像这样的东西:

我找到了答案,如何将参数传递给线程,但我不确定如何根据需要重建它。感谢您的想法。

0 投票
1 回答
253 浏览

java - SwingUtilities.invokeLater() 仅在一帧期间显示

我正在使用 Swing 来创建一个小的 java 2D 游戏。我只尝试显示图像。因为我不在 EDT 上,所以我使用 SwingUtilities.invokeLater() 来做这些事情。当我使用它时,图像不显示(实际上它在几毫秒内显示并消失)。当我不使用 SwingUtilities.invokeLater() 时,图像会正确显示,但我需要使用 invokeLater()。

这是我的基本代码:

}

任何想法 ?

谢谢。

0 投票
1 回答
84 浏览

java - java中GUI和线程的奇怪之处

给定以下代码:

一切正常,我得到了一个不错的 GUI 窗口。好的。现在,让我们在 gui.start() 之后添加一个无限循环:

并且输出是一个空白窗口,对窗口退出没有反应。有人可以解释一下这里到底发生了什么吗?

0 投票
2 回答
130 浏览

java - 解释 Runnable 和 Invoke()

有人可以在下面的书面代码中解释一下吗?

它是 Java 程序的一部分,它允许用户从文件夹中选择一个文件并将该文件分割成块。

0 投票
3 回答
952 浏览

java - 快速写入 JEditorPane

在下面的代码中,我想在 JEditorPane 上写入数字 0 到 10000。但是,JEditorPane 不显示任何内容,除非它完全完成(一次打印所有 0 到 10000)或者当操作系统给它时间刷新和显示内容。无论哪种情况,应用程序都会在一段时间内无响应,用户认为应用程序已崩溃。无论如何我们可以强制 jEditorPane 显示更新的内容,即使它仍然很忙?我尝试了invokeAndWait,但在这里没有帮助,因为我们无法从事件调度程序线程调用invokeAndWait。

换句话说,如果我将 替换为Thread.sleep(0)Thread.sleep(50)它可以正常工作并在结果发生时显示打印结果,但是添加 50 毫秒延迟会使它变得非常慢。我想要的只是不时更新 JEditorPane,这样用户就不会认为应用程序崩溃了。我更喜欢只修改 updateMessages()。 这是我的代码: