jjzjj

invokelater

全部标签

java - 网络 Swing 游戏中的多线程 : using invokeLater vs locks

我正在编写一个简单的自上而下的太空游戏,并且正在扩展它以允许通过网络与多个玩家一起玩。我读了很多书,但这是我第一次这样做,我希望能得到一些关于选择合理设计的建议。我的GUI是使用Swing编写的。每秒30次,计时器触发,并根据内存中gameWorld对象中的数据重新绘制我的GUI(本质上是带有位置的船舶和射弹列表等)。游戏世界的物理更新也是使用这个计时器进行的。因此,对于单人游戏实现,一切都发生在EDT上,并且效果很好。现在,我有单独的线程处理来自其他玩家的传入数据包。我想根据这些数据包包含的内容更新我的gameWorld对象中的数据。我的问题是,我应该使用invokeLater来进行

java - AWT 事件调度线程中的 SwingUtilities.invokeLater

如果您正在修改GUI并且处于AWT事件调度线程中,例如ActionListener,您是否应该使用SwingUtilities.invokeLater(Runnable)? 最佳答案 您必须始终在事件调度线程(EDT)中进行GUI更新。然而,正如Jeffrey在评论中指出的那样,Swing对象上的ActionListener.actionPerformed方法已经从EDT调用。如果您只是想让JButton看起来启用/未启用或从JList添加/删除项目,并且您通过ActionListener在Swing组件上,那么您不必显式调用Swi

java - 带进度条的 Swing 启动画面

这是我的启动画面代码,publicclassSplashScreenextendsJWindow{privatestaticfinallongserialVersionUID=1L;privateBorderLayoutborderLayout=newBorderLayout();privateJLabelimageLabel=newJLabel();privateJProgressBarprogressBar=newJProgressBar(0,100);publicSplashScreen(ImageIconimageIcon){imageLabel.setIcon(imageIc

java - Swing 线程安全编程

publicstaticvoidmain(Stringargs[]){/*SettheNimbuslookandfeel*////*IfNimbus(introducedinJavaSE6)isnotavailable,staywiththedefaultlookandfeel.*Fordetailsseehttp://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html*/try{for(javax.swing.UIManager.LookAndFeelInfoinfo:javax.swing.UIMana

java - EventQueue.invokeLater 与 SwingUtilities.invokeLater

有人可以强调这两者之间的区别以及两者都是必需的实例吗?!我有一个可以互换使用的应用程序,但想知道一个是否比另一个更好。显然它们都接受Runnableobject,所以对我来说-我想我可以使用我喜欢的那个。为什么这两个相似的函数在不同的类中?我知道一个在awt中,另一个在Swing中,但他们不是做同样的事情吗? 最佳答案 SwingUtilities.invokeLater之所以存在,是因为EventQueue.invokelater是在1.2中引入的,但Swing可用于1.1。JRE中的Swing一直只调用EventQueue版本。

java - 忽略事件分派(dispatch)线程如何让这个程序工作?

当我试图看看我是否能回答thisquestionearliertoday.我意识到我不完全理解EventDispatchThread(美国东部时间)。Googling双方都确认并帮助了这一点并澄清了whyIdon't.(This也可能与理解有关。)该代码设置了一个GUI,随后(如前面的问题)更新了一个文本字段,直到取消设置标志。我有几个问题/请求。如果两个调用(对swingInit和doIt)都在invokeLater之外,请解释为什么下面的代码运行正常block(如图所示),因为这两个调用都会影响或查询GUI,但都不会在EDT上执行(是吗?)。那不是招来失败吗?如果调用swingIn

java - 使用 invokeLater 或 SwingWorker 从另一个线程更新 Swing 组件

我正在开发一个带有SwingGUI的小型应用程序。应用程序在另一个线程中执行IO任务,当该线程完成时,GUI应相应更新以反射(reflect)线程的操作结果。在(worker,non-GUI)中运行的类在构造函数中传递给它的对象将用于更新GUI,所以我不需要将GUI的东西放在非GUI类中,而是传递用于更新GUI的对象到那个类(class)。据我了解这里阅读的形式,(线程/Swing)更新(更改)SwingGUI的安全选项将使用javax.swing.SwingUtilities.invokeLater(),javax.swing.SwingUtilities.invokeLaterWa

java - SwingUtilities.invokeLater 需要一个 Runnable 并在 EDT 上运行它?

我对SwingUtilities.invokeLater的签名感到困惑。它需要一个Runnable对象。是这个Runnable对象交给了EventDispatchThread吗?为什么我不能在EDT的run方法上直接调用createAndShowGUI(如果可能的话)?我有readarticles关于如何EDT和invokeLater工作,但我对传递的Runnable对象感到困惑。SwingUtilities.invokeLater(newRunnable(){publicvoidrun(){createAndShowGUI();}});如果我在调用之后再次调用SwingUtiliti

java - 使用 invokeLater 后 Swing UI 未更新

我有一个JavaSwingUI,它没有像我认为的那样更新/重绘。该应用程序发送XMPP消息并在不同的线程上接收响应。处理该响应并更新UI以反射(reflect)消息中包含的信息。收到响应后,我使用更新JPanel组件javax.swing.SwingUtilities.invokeLater(newRunnable(){publicvoidrun(){/*executelogictoupdatepanel*/}});自从我用Java开发以来已经有一段时间了,但根据我的在线研究,invokeLater将可运行对象排队等待在GUI线程上执行。但是,直到我在应用程序中执行导致重绘的其他操作(

Java 事件队列。为什么一切都应该在 invokelater 方法中?

在我正在阅读的书中,每个使用多线程的GUI示例都有类似的内容:publicstaticvoidmain(String[]args)throwsException{EventQueue.invokeLater(newRunnable(){publicvoidrun(){JFrameframe=newSomeKindOfFrame();frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);frame.setVisible(true);}});}(我的意思是EventQueue)。但代码不是在主(EDT)线程中自动执行吗?