成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

介紹Swing線程相關(guān)處理

開發(fā) 后端
本文介紹Swing線程相關(guān)處理,簡單地在actionPerformed()方法中添加線程,確保監(jiān)聽器在新的線程中執(zhí)行照顧到了整個線程問題。

我們知道這將在非Swing線程中調(diào)用,因為該事件是直接在LookupManager中觸發(fā)的,這將不是在Swing線程中執(zhí)行。因為所有的代碼功能上都是異步的(我們不必等待監(jiān)聽器方法允許結(jié)束后才調(diào)用其它代碼),我們可以通過SwingUtilities.invokeLater()將這些代碼改道到Swing線程。下面是新的方法,傳入一個匿名Runnable到SwingUtilities.invokeLater():

  1. public void lookupCompleted(final LookupEvent e) {  
  2.  //notice the threading  
  3.  SwingUtilities.invokeLater( new Runnable() {  
  4.   public void run() {  
  5.    outputTA.setText("");  
  6.    String[] results = e.getResults();  
  7.    for (int i = 0; i < results.length; i++) {  
  8.     String result = results[i];  
  9.     outputTA.setText(outputTA.getText() + " " + result);  
  10.    }  
  11.   }  
  12.  }  
  13. );  
  14. }  

如果任何LookupListener不是在Swing線程中執(zhí)行,我們可以在調(diào)用線程中執(zhí)行監(jiān)聽器代碼。作為一個原則,我們希望所有的監(jiān)聽器都迅速地接到通知。所以,如果你有一個監(jiān)聽器需要很多時間來處理自己的功能,你應(yīng)該創(chuàng)建一個新的線程或者把耗時代碼放入ThreadPool中等待執(zhí)行。

最后的步驟是讓LookupManager在非Swing線程中執(zhí)行l(wèi)ookup。當前,LookupManager是在JButton的 ActionListener的Swing線程中被調(diào)用的。現(xiàn)在是我們做出決定的時候,或者我們在JButton的ActionListener中引入一個新的線程,或者我們可以保證lookup自己在非Swing線程中執(zhí)行,自己開始一個新的線程。我選擇盡可能和Swing類貼近地管理Swing線程。這有助于把所有Swing邏輯封裝在一起。如果我們把Swing線程邏輯添加到LookupManager,我們將引入了一層不必要的依賴。并且,對于 LookupManager在非Swing線程環(huán)境中孵化自己的線程是完全沒有必要的,比如一個非繪圖的用戶界面,在我們的例子中,就是Logger。產(chǎn)生不必要的新線程將損害到你應(yīng)用的性能,而不是提高性能。LookupManager執(zhí)行的很好,不管Swing線程與否--所以,我喜歡把代碼集中在那兒。

現(xiàn)在我們需要將JButton的ActionListener執(zhí)行l(wèi)ookup的代碼放在一個非Swing線程中。我們創(chuàng)建一個匿名的Thread,使用一個匿名的Runnable執(zhí)行這個lookup。

  1. private void searchButton_actionPerformed() {  
  2.  new Thread(){  
  3.   public void run() {  
  4.    lookupManager.lookup(searchTF.getText());  
  5.   }  
  6.  }.start();  
  7. }  

這就完成了我們的Swing線程。簡單地在actionPerformed()方法中添加線程,確保監(jiān)聽器在新的線程中執(zhí)行照顧到了整個線程問題。注意,我們不用處理像第一個例子那樣的任何問題。通過把時間花費在定義一個事件驅(qū)動的體系,我們在和Swing線程相關(guān)處理上節(jié)約了更多的時間。

【編輯推薦】

  1. Swing線程解決方案
  2. 淺析Swing項目的開發(fā)
  3. 全面比較AWT和Swing
  4. 淺談Swing繪畫的處理過程
  5. 概述JSci.swing包的核心
責(zé)任編輯:佚名 來源: 51cto.com
相關(guān)推薦

2010-03-29 13:49:40

Nginx圖片處理

2009-07-10 13:36:32

Swing容器

2009-08-05 18:28:05

C#異常處理

2009-07-10 18:06:59

JTree Swing

2009-07-15 10:37:28

Swing外觀

2009-07-10 15:41:27

Swing AWT

2009-07-16 08:53:03

Swing任務(wù)Swing線程

2009-07-10 16:29:32

Swing組件

2010-03-17 19:24:38

Java多線程循環(huán)

2009-07-10 14:41:57

Swing技術(shù)

2009-07-17 11:13:46

AWT和SwingSwing組件

2009-07-17 14:38:51

輕量級Swing組件

2009-07-15 10:23:51

Swing SWT集成

2009-07-15 16:03:26

Swing線程

2009-07-17 15:30:30

JFaceAWT和SWTSwing

2009-07-10 11:45:44

Java Swing

2009-07-15 17:09:32

Swing線程

2010-03-18 16:19:02

Java自定義線程池

2009-07-16 16:23:59

Swing線程

2009-07-16 11:19:48

外部線程Swing組件
點贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 国产区在线观看 | 91久色| 国产精品一区一区三区 | 九九精品视频在线 | 欧美成人专区 | 色资源在线视频 | 毛片视频网址 | 日韩中文在线 | 国产精品二区三区 | 中文字幕二区 | 中文字幕第九页 | 日韩一级二级片 | 亚洲国产成人精品久久久国产成人一区 | 亚洲国产91| 91国在线视频 | 另类 综合 日韩 欧美 亚洲 | 亚洲精品色| 成人精品一区二区 | 日本欧美视频 | 精品中文字幕在线观看 | 99精品视频一区二区三区 | 一级做a爰片久久毛片免费看 | 日韩精品在线观看一区二区 | 天天干天天爽 | 蜜桃在线播放 | 久久精品视频9 | 国产精品久久久久一区二区 | 特级黄一级播放 | 久久久久亚洲 | 欧美一级欧美一级在线播放 | 国产精品不卡 | 午夜视频在线免费观看 | 91精品久久久 | 欧洲高清转码区一二区 | 久久大陆 | 美女视频黄的 | 亚洲欧美在线观看视频 | 日韩视频精品在线 | 亚洲高清在线 | 日韩一区二区三区在线看 | 国产最新精品视频 |