网站建设资讯

NEWS

网站建设资讯

Swing如何使用invokeLater()方法

本篇内容主要讲解“Swing如何使用invokeLater()方法”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Swing如何使用invokeLater()方法”吧!

十多年的洛龙网站建设经验,针对设计、前端、开发、售后、文案、推广等六对一服务,响应快,48小时及时工作处理。网络营销推广的优势是能够根据用户设备显示端的尺寸不同,自动调整洛龙建站的显示方式,使网站能够适用不同显示终端,在浏览器中调整网站的宽度,无论在任何一种浏览器上浏览网站,都能展现优雅布局与设计,从而大程度地提升浏览体验。成都创新互联公司从事“洛龙网站设计”,“洛龙网站推广”以来,每个客户项目都认真落实执行。

Swing使用invokeLater()方法

你可以从任何线程调用invokeLater()方法以请求事件派发线程运行特定代码。你必须把要运行的代码放到一个Runnable对象的run()方法中,并将此Runnable对象设为invokeLater()的参数。 invokeLater()方法会立即返回,不等待事件派发线程执行指定代码。这是一个使用invokeLater()方法的例子:

RunnabledoWorkRunnable=newRunnable(){  publicvoidrun(){doWork();}  };  SwingUtilities.invokeLater(doWorkRunnable);

Swing使用invokeAndWait()方法

invokeAndWait()方法和invokeLater()方法很相似,除了 invokeAndWait()方法会等事件派发线程执行了指定代码才返回。在可能的情况下,你应该尽量用invokeLater()来代替 invokeAndWait()。如果你真的要使用invokeAndWait(),请确保调用invokeAndWait()的线程不会在调用期间持有任何其他线程可能需要的锁。
这是一个使用invokeAndWait()的例子:

voidshowHelloThereDialog()  throwsException{  RunnableshowModalDialog=new Runnable(){  publicvoidrun(){  JOptionPane.showMessageDialog(  myMainFrame,"HelloThere");  }  };  SwingUtilities.invokeAndWait  (showModalDialog);  }


类似地,假设一个线程需要对GUI的状态进行存取,比如文本域的内容,它的代码可能类似这样:

voidprintTextField()throwsException{  finalString[]myStrings=  newString[2];   RunnablegetTextFieldText=  newRunnable(){  publicvoidrun(){  myStrings[0]=  textField0.getText();  myStrings[1]=  textField1.getText();  }  };  SwingUtilities.invokeAndWait  (getTextFieldText);   System.out.println(myStrings[0]  +""+myStrings[1]);  }

如果你能避免使用线程,***这样做。线程可能难于使用,并使得程序的debug更困难。一般来说,对于严格意义下的GUI工作,线程是不必要的,比如对组件属性的更新。
不管怎么说,有时候线程是必要的。下列情况是使用线程的一些典型情况:


◆执行一项费时的任务而不必将事件派发线程锁定。例子包括执行大量计算的情况,会导致大量类被装载的情况(如初始化),和为网络或磁盘I/O而阻塞的情况。
◆重复地执行一项操作,通常在两次操作间间隔一个预定的时间周期。
◆要等待来自客户的消息。


你可以使用两个类来帮助你实现Swing线程:

◆SwingWorker:创建一个后台线程来执行费时的操作。
◆Timer:创建一个线程来执行或多次执行某些代码,在两次执行间间隔用户定义的延迟。

到此,相信大家对“Swing如何使用invokeLater()方法”有了更深的了解,不妨来实际操作一番吧!这里是创新互联网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!


名称栏目:Swing如何使用invokeLater()方法
本文地址:http://cdweb.net/article/jeeheg.html