问题标签 [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.

0 投票
2 回答
276 浏览

java - DefaultStyledDocument.styleChanged(Style style) 可能无法及时运行?

我遇到了一个扩展类的间歇性问题javax.swing.text.DefaultStyledDocument。此文档正在发送到打印机。大多数情况下,文档的格式看起来是正确的,但有时却不正确。格式中的某些更改似乎尚未应用。

我看了一下DefaultStyledDocument.styleChanged(Style style)代码:

SwingUtilities.invokeLater(updateRunnable)被称为而不是的事实是否invokeAndWait(updateRunnable)意味着我不能指望在呈现文档之前出现在文档中的格式更改?

如果是这种情况,有没有办法确保在更新发生之前我不会继续渲染?

0 投票
2 回答
8470 浏览

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

0 投票
1 回答
5987 浏览

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 的调用是空调用。

如果您能帮助解决这个问题,请提前致谢。

0 投票
3 回答
135328 浏览

java - Java鼠标事件右键单击

在我的三键鼠标上MouseEvent.BUTTON2= 中键单击和MouseEvent.BUTTON3= 右键单击​​。

这是两键鼠标的情况吗?

谢谢

0 投票
1 回答
3939 浏览

java - SwingUtilities.invokeAndWait 未运行

run() 方法中的代码没有被执行。谁能告诉我为什么?

引发错误:

0 投票
3 回答
2153 浏览

java - Java SwingUtilities.invokeLater

嗨,我设计的这个应用程序的最后阶段有点痛苦。

基本上,当用户单击按钮时,我希望光标变为“等待”版本,然后一旦后台进程(task.execute)完成,光标就会恢复正常。

task.execute 不在同一个类中,所以我不能直接调用“gui.setCursor”,因为它不能将 GUI 识别为变量。

不知道该怎么做,所以任何建议都会很棒

感谢:D

0 投票
1 回答
516 浏览

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(),如下所示:

0 投票
1 回答
1962 浏览

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 生成的特定线程实例,以便我可以停止它?用更简单的话来说,我怎样才能杀死上面创建的线程?

0 投票
1 回答
4694 浏览

java - 为什么我需要 Swing Utilities 以及如何使用它?

这主要是关于我在这里的问题,但我不明白为什么需要Swing Utilities以及它的用途。我正在设计一个 Swing gui,我不想错过 Swing Utilities 可能提供的任何东西。也有人可以解释该invokeLater方法的作用和工作原理。

0 投票
7 回答
4766 浏览

java - SwingUtilites:如何从 Java 中的另一个线程返回值?

我正在尝试用 Java 制作一个应用程序。为了使 Swing 正常工作,我这样做了:

如何在主体中获取此输入字符串?