问题标签 [swingutilities]
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.
java - DefaultStyledDocument.styleChanged(Style style) 可能无法及时运行?
我遇到了一个扩展类的间歇性问题javax.swing.text.DefaultStyledDocument
。此文档正在发送到打印机。大多数情况下,文档的格式看起来是正确的,但有时却不正确。格式中的某些更改似乎尚未应用。
我看了一下DefaultStyledDocument.styleChanged(Style style)
代码:
SwingUtilities.invokeLater(updateRunnable)
被称为而不是的事实是否invokeAndWait(updateRunnable)
意味着我不能指望在呈现文档之前出现在文档中的格式更改?
如果是这种情况,有没有办法确保在更新发生之前我不会继续渲染?
java - Java - SwingWorker 和 SwingUtilities.invokeLater() 之间的区别
SwingWorker
用于以下目的:
- 用于在不同线程中运行长时间运行的任务,以防止 GUI 无响应
- 用于通过方法在任务结束时使用长时间运行的任务产生的结果更新 GUI
done()
。 publish()
用于在和process()
方法的帮助下使用任务生成和发布的中间结果不时更新 GUI 。
SwingUtilities.invokeLater()
可以按如下方式执行上述任务:
SwingWorker.execute()
我们可以执行,而不是从 EDT执行方法,ExecutorService.submit(new MyRunnable())
因为它还会创建另一个可以执行长时间运行的任务的线程。- 为了在任务结束时更新 GUI,我们可以将代码(用
done()
case1 的方法编写)SwingUtilites.invokeLater(new RunnableToExecuteDoneMethodCode())
放在任务结束时。 - 为了在任务中间更新GUI,我们可以将代码(写在
process()
case1的方法中)SwingUtilites.invokeLater(new RunnableToExecuteProcessMethodCode())
放在我们调用case1方法的地方publish()
。
我问这个问题是因为问题中指定的问题Java - SwingWorker - 我们可以从其他 SwingWorker 而不是 EDT 调用一个 SwingWorker可以解决SwingUtilities.invokeLater()
但不能解决SwingWorker
java - Java Swing main JFrame:为什么 SwingUtilities.getAncestorOfClass 返回 null?
我打算实现一个 Swing 应用程序,它将所有 JComponents 都保存在主应用程序窗口 JFrame 中。为我的所有 JPanel 构造函数提供一个引用 JFrame 的参数似乎是笨重的程序代码。因此,一些研究发现了 SwingUtilities.getAncestorOfClass,它看起来像是解决方案。但是我不明白为什么当我尝试使用它在我的 JPanel 代码中获取对 JFrame 的引用时它返回 null。
为了给你一个想法,这里是主 JFrame 的代码,它还创建了一个 ViewPanel 并在 JFrame 中插入:
这是我的 ViewPanel 代码,当您按下“Try Me”按钮时,会导致 NullPointerException,因为对 ViewPanel 的 SwingUtilities.getAncestorOfClass 的调用是空调用。
如果您能帮助解决这个问题,请提前致谢。
java - Java鼠标事件右键单击
在我的三键鼠标上MouseEvent.BUTTON2
= 中键单击和MouseEvent.BUTTON3
= 右键单击。
这是两键鼠标的情况吗?
谢谢
java - SwingUtilities.invokeAndWait 未运行
run() 方法中的代码没有被执行。谁能告诉我为什么?
引发错误:
java - Java SwingUtilities.invokeLater
嗨,我设计的这个应用程序的最后阶段有点痛苦。
基本上,当用户单击按钮时,我希望光标变为“等待”版本,然后一旦后台进程(task.execute)完成,光标就会恢复正常。
task.execute 不在同一个类中,所以我不能直接调用“gui.setCursor”,因为它不能将 GUI 识别为变量。
不知道该怎么做,所以任何建议都会很棒
感谢:D
java - 执行进程时 GUI 无法更新 (SwingUtilities.invokeLater)
参考我之前的问题Unable to perform any action before Process.Runtime.exec statement line,我已将代码更改为两部分,一个线程类 CmdExec 具有执行外部程序的所有代码,如下所示:
通过参考 jtahlborn 的答案,我还为 GUI 更新目的做了另一个 Runnable 类,如下所示:
在实际运行 process.exec() 调用外部程序之前,我调用 SwingUtilities.invokeLater 更改 GUI,如下所示:
但是对于上述所有代码,GUI 仍然无法更新,并且仅在该过程完成后才更新。在协调这两个可运行线程和线程的任何特定步骤上我错了吗?
提前感谢您的大力帮助和回答
P / S:我在 GUI 中按下按钮期间开始执行 CmdExec(),如下所示:
multithreading - 在 SwingUtilities.invokeLater() 中杀死一个线程
我有一个摇摆应用程序。单击菜单栏上的 menuItem 后,我正在尝试进行 API 调用,这可能需要一些时间。
在 API 调用给出结果之前,我不希望 Swing 应用程序卡住/挂起,因此我使用 SwingUtilities.invokeLater 分离出一个新生成的线程来处理 API 调用。以下是上面的代码
只要 API 调用线程正常运行,我就会显示一个 JDIalog,其中显示一条消息“API call in Progress”和一个“Abort Thread”按钮。
我想在单击 Jdialog 中的“Abort Thread”按钮时终止该线程。
如果它是一个普通线程,我们有 aThread t = new Thread(new Runnable())
并且我们在同一线程上调用 a t.stop
。
如何获取 SwingUtilities 生成的特定线程实例,以便我可以停止它?用更简单的话来说,我怎样才能杀死上面创建的线程?
java - 为什么我需要 Swing Utilities 以及如何使用它?
这主要是关于我在这里的问题,但我不明白为什么需要Swing Utilities以及它的用途。我正在设计一个 Swing gui,我不想错过 Swing Utilities 可能提供的任何东西。也有人可以解释该invokeLater
方法的作用和工作原理。
java - SwingUtilites:如何从 Java 中的另一个线程返回值?
我正在尝试用 Java 制作一个应用程序。为了使 Swing 正常工作,我这样做了:
如何在主体中获取此输入字符串?