浅析Swing中actionPerformed()方法

程序中用Swing组件时应注意,任何java程序都是由主线程中的main()方法开始执行,当main()方法中的JFrame调用setVisiable(true) 后,引发了另一个线程——事件分派线程,而actionPerformed()方法及paintComponent()方法都是在事件分派Swing线程中被调用,所以如果在actionPerformed()方法中有大量的耗时操作,将会导致用户界面无法响应用户请求,造成用户界面锁死。在这种情况下,最好在 actionPerformed()方法中将耗时操作的程序部分移至一个新的Swing线程中实现,这样程序在进行大量计算的同时又可以及时地响应用户请求。

创新互联专业为企业提供渝北网站建设、渝北做网站、渝北网站设计、渝北网站制作等企业网站建设、网页设计与制作、渝北企业网站模板建站服务,十载渝北做网站经验,不只是建网站,更提供有价值的思路和整体网络服务。

 
 
 
  1. packagetestswingguilock;  
  2.  
  3. importjavax.swing.*;  
  4. importjava.awt.*;  
  5. importjava.awt.event.*;  
  6.  
  7. publicclassTestSwingGUILock{  
  8. TestSwingGUILock(){  
  9. initGUI();  
  10. }  
  11.  
  12. voidcostMoreTime(){  
  13. doubled=0;  
  14. //耗费大量时间的操作  
  15. for(inti=0;i;i++)  
  16. d+=i;  
  17. System.out.println("Ihavedosomanyworks!Theresultis"+d);  
  18. }  
  19.  
  20. voidinitGUI(){  
  21. JButtonjbutton=newJButton("Start");  
  22. jbutton.addActionListener(newActionListener(){  
  23. publicvoidactionPerformed(ActionEvente){  
  24. System.out.println("Youhavepressedme!");  
  25. //将耗时操作放置在新的线程内完成  
  26. newThread(newRunnable(){  
  27. publicvoidrun(){  
  28. costMoreTime();  
  29. }  
  30. }).start();  
  31. }  
  32. });  
  33. JFramejframe=newJFrame();  
  34. Containercontainer=newContainer();  
  35. container.setLayout(newBorderLayout());  
  36. container.add(jbutton,BorderLayout.SOUTH);  
  37. jframe.setContentPane(container);  
  38. jframe.setSize(200,200);  
  39. jframe.setVisible(true);  
  40. jframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);  
  41. }  
  42.  
  43. publicstaticvoidmain(String[]args){  
  44. newTestSwingGUILock();  
  45. }  

【编辑推荐】

  1. 浅谈Java Swing的连接数据库
  2. 介绍JFace、Swing、AWT和SWT
  3. 详解SwingWorker与Swing程序
  4. 介绍轻量级Swing组件
  5. Swing组件都扩展自JComponent

文章题目:浅析Swing中actionPerformed()方法
网页地址:http://www.zyruijie.cn/qtweb/news22/4422.html

网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联