Java-使用另一个类的swinguties.invokeLater fr?

Java-使用另一个类的swinguties.invokeLater fr?,java,swing,jetty,Java,Swing,Jetty,我正在编写一个使用WebSocket进行通信的应用程序。我使用Jetty作为我的Websocket客户端,我让它可以很好地发送和接收消息。我有一个接收消息的onMessage方法,它可以很好地打印消息,但是我不太确定如何让它回调到我的MainUI线程 我一直在阅读swingutlities.invokeLater,但我不太明白如何从另一个类和线程中获得它 Thx使用SwingWorker在单独的线程中运行套接字连接。SwingWorker有一些方法,允许您在结果可用时将其“发布”回GUI 阅读S

我正在编写一个使用WebSocket进行通信的应用程序。我使用Jetty作为我的Websocket客户端,我让它可以很好地发送和接收消息。我有一个接收消息的onMessage方法,它可以很好地打印消息,但是我不太确定如何让它回调到我的MainUI线程

我一直在阅读swingutlities.invokeLater,但我不太明白如何从另一个类和线程中获得它


Thx

使用
SwingWorker
在单独的线程中运行套接字连接。
SwingWorker
有一些方法,允许您在结果可用时将其“发布”回GUI


阅读Swing教程中的部分,了解事件调度线程(EDT)如何在Swing中工作的背景信息。关于具有临时结果的任务的
部分有一个使用
SwingWorker

invokeLater()
的示例,它应该在任何线程或类中工作,这就是它的用途。然而,我担心Swing和Jetty/web服务器的混合。你确定这就是你想做的吗?您能否从更高的层次描述您的应用程序,以便我们检查这是否是一个误解?我的应用程序只有几个按钮,用于向服务器发送Websocket消息。我想使用收到的消息向按钮提供反馈(因此,如果按钮1被激活,按钮周围可能会有一个绿色边框)。好吧,我假设Jetty只涉及服务器端?你说的是“Jetty客户端”,这让我很困惑。@markspace他可能在使用Jetty的WebSocket客户端库(没有服务器)。即便如此,websocket客户端也会启动一组线程(在线程池中)来处理它的处理。@markspace Jetty(最近计数)有4个独立的客户端库:http高级客户端(http/1.1、http/2、fcgi、h2c等)、http/2低级客户端(访问原始http/2流/帧)、本机websocket客户端、,jsr356 websocket客户端。看起来SwingWorker就是这样。干杯,伙计@jdm555很高兴它能帮上忙。不要忘记点击复选标记“接受”答案,这样人们就知道问题已经解决了。(其他问题也一样)。可以。我的插座在另一个班级。我是在socket类还是在MainUI类中实现SwingWorker?我在MainUI类atm中有它,我不确定如何从socket类中的onMsg事件访问publish方法。SwingWorker实际上只是一个单独的线程,添加了一些方法,允许您更新GUI。所以你需要打开SwingWorker中的插座。