问题标签 [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.
java - 调用和等待与子类交互
我发现了很多关于稍后调用以及在整个站点调用和等待的好例子。但是我遇到的问题是我想从一个由 main 方法调用的类中获得响应
任何人都可以提供一些主要方法调用子方法的代码,以查看它是如何使用 invoe 和 wait 方法构造的吗?提前致谢
java - SwingUtilities.invokeLater 是什么
可能重复:
SwingUtilities.invokeLater 做什么?
SwingUtilities.invokeLater
我已经看过数百次这样的小代码:
现在我的问题是:做invokeLater()
什么?如果我只是在主线程中创建并显示我的 GUI,会发生什么样的坏事?
java - Java SwingUtilities.invokeLater 更新 TextArea
我有以下课程:
- 主服务器
- TCP服务器
- UDP服务器
我从 MainServer 类创建 TCPServer 和 UDPServer 类的新实例(开始),我的 GUI 在其中初始化。在这个 GUI 中,我有一个textArea,TCP 或 UDP 类需要更新它以显示日志信息(错误、状态等)。我做了一些搜索,我知道我可能需要在 MainServer 中使用 EDT,但不知道如何从 TCPServer 或 UDPServer 访问 MainServer 类中的这个对象。现在我只能打印到控制台,这是不可取的。如何从 TCPServer 访问 MainServer.printlog?或 Mainserver.textArea 对象?如果我从 TCPServer 或 UDPServer 创建一个新的 MainServer 实例,这似乎不起作用。
这是我在 MainServer 类中的函数:
编辑:我试图创建一个新的实例MainServer
并访问printLog
,但我得到:
java - 为什么我应该使用单独的线程在 JAVA 中显示 GUI
这个简单的问题让我感到困惑。setVisible
您可以通过设置框架的属性来显示 JAVA GUI 应用程序true
。但是在我在互联网上找到的几乎所有示例中,它们都使用单独的线程来做同样的事情。
他们做这样的事情,
我发现这两种方法没有区别。但是肯定有什么特殊的原因,这就是为什么大家都这样。
有人能解释一下吗..谢谢!
java - 在繁重的进程下无法更新 Swing 组件
我在一个匿名SwingWorker
线程下运行一个非常繁重的进程。同时,我正在使用进度条向 GUI 报告进度。然而,Swing 线程让我陷入了困境。它根本没有及时更新任何东西。我不知道该怎么做,因为我尝试从SwingWorker
线程和外部更新 GUI,但都拒绝工作。
如何在繁重的工作线程运行时可靠地更新 Swing UI?
我尝试过的事情
这不起作用(有或没有在invokeLater
命令中换行)。
此外,尝试从并发测量线程更新 UI 不起作用:
java - 自定义模式对话框
我正在创建自己的对话框,它基本上是一个 JPanel,设置为 JFrame 上的玻璃窗格。我想让我的对话框模态化,因为在对话框可见时不执行 setVisible() 之后的所有代码,一旦对话框关闭,setVisible() 之后的其余代码必须继续。
为此,我使用线程来显示我的对话框。我知道 SwingUtilities.invokeLater() 方法必须用于更新 gui,因为它是在另一个线程中执行的。但是我的对话框没有显示在屏幕上。
这是我的代码示例:
为什么我的对话框没有显示?
java - SwingUtilities.invokeLater:问题
我一直不明白SwingUtilities.invokeLater
,这就是我直到现在一直避免它的原因。但是让 Swing Thread 安全非常重要。好吧,请原谅,因为这是我第一次这样做。我试图在一些数据库查询后关闭窗口。所以,据我所知,任何更新都UI
必须由 .SwingUtilities.invokeLater
这是我的工作:
主要的:
添加按钮上的侦听器
浏览按钮上的侦听器
这是问题,退出代码。
屏幕:
请解释我哪里出错了,我不想使用System.exit
,请原谅我问了太多问题。谢谢。
更新:
这是@trashgod 要求的示例工作代码
请运行并告诉如何修改exit()
以关闭窗口。再次感谢。
java - 在运行时创建摆动组件
我创建了应用程序,它的行为与预期的差不多。只要数据库查询正在运行,gui 就会保持响应。当使用 SwingUtilities.invokeLater() 创建自定义面板时,gui 会冻结很短的时间。
当我使用 SwingUtilities.invokeAndWait() 时,它在高端游戏 PC 上运行非常流畅。(可能不是最好的编码机器......)但是在相对较慢的机器(双核,2GB RAM)上,gui“滞后”
我创建了一个非常小的版本的程序来重现该行为。测试时增加 TEST_NUMBER_OF_PANELS 的值。
它将它设置为一个非常大的值,以在我当前的 PC 上重现行为,而无需任何花哨的外观和感觉以及其他组件。但我不想这样发布。所以我把它减到100
我想我应该使用 SwingWorker 而不是在 EDT 上运行尽可能多的代码。我知道我应该在单独的线程中访问 TableModel。如果应用程序中只有一个 JTable,它很简单:我在 EDT 上创建表并更新线程上的数据。
在那种情况下,我不确定哪种方法是可取的。现在所有与 tabe 相关的东西都在 TestPanel 类中管理。它完全在 EDT 上运行。
当然,我可以在 TestPanel 中运行一个线程来处理 TableModel,但是为每个面板创建一个新线程对我来说听起来不是一个聪明的主意。
另一个“想法”是在运行数据库查询的同一线程上直接在 TestTab 中创建模型。但由于它属于 TestPanel,这种方法听起来像是糟糕的设计。
到目前为止,我最肮脏的想法是使用 invokeAndWait() 并让 Tread.sleep() 一段时间,这样 ETD 就不会每隔几毫秒就被新调用打耳光。但我实际上并不想那样编码。
什么设计方法可能是最可取的?
我想在运行时在 JTabbedPane 中创建几个自定义面板。自定义面板的数量取决于数据库查询的结果集。
每个自定义面板都包含一个 JTable,其中包含来自结果集中的大量数据和一些 JButton。
我的计划是使用 SwingWorker 在单独的线程上运行数据库查询。然后使用 invokeLater() 在 Event Dispatch Thread 上安排一个任务来创建自定义面板,因为必须在 EDT 中创建和访问 Swing 组件。
使用这种方法,如果结果集包含很多行,则 gui 在创建自定义面板时可能会冻结。
解决或最小化这个问题的最优雅的方法是什么?
java - Swing对象的静态赋值可以吗?
例如:这可以在 MyPane 类中使用吗?
Swing会有问题吗?我们应该总是把这些赋值放在invokeLater 中吗?谢谢。
java - 组合框 Java 的文档未更新
我在 中编写 Bing/Googleinstant search
类型的功能combo box
,因此此组合框根据用户输入的内容向用户提供建议。该程序就像一个魅力,但它们是一个我无法弄清楚如何解决的错误。问题是,一旦键入第二个字符,就会识别键入的第一个字符,字符的其他位置也是如此。
这是代码:
我究竟做错了什么?
我将 keyListener 添加到组合框编辑器中,因为在DocumentListener
组合框中键入内容时没有调用它?如果还有其他简单的替代方法,请分享。
我该如何解决上述问题?