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

Swing組件相關的操作

開發 后端
本文介紹Swing組件庫提供了一個專門來完成這些與Swing組件相關的操作的線程,而這一線程就是event-dispatching thread。

不靈敏的圖形用戶界面會降低應用程序的可用性。當以下現象出現的時候,我們通常說這個用戶界面反應不靈敏:
◆不響應事件的現象;
◆沒有更新的現象;

這些現象在很大程度上與事件的處理方法相關,而在編寫Swing應用程序的時候,我們幾乎必然要編寫方法去響應鼠標點擊按鈕,鍵盤回車等事件。在這些方法中我們要編寫一些代碼,在運行時去觸發一些動作。常見動作包括查找,更新數據庫等。在這篇文章中通過對一個實例的分析,介紹了一些基本概念,常見的錯誤以及提出了一個解決方案。

event-dispatching thread
我們一定要記住,事件響應方法的代碼都是在event-dispatching thread中執行的,除非你啟用另一個線程。
那么,什么是event-dispatching thread呢?單一線程規則:一旦一個Swing組件被實現(realized),所有的有可能影響或依賴于這個組件的狀態的代碼都應該在event-dispatching thread中被執行。而實現一個組件有兩種方式,對頂層組件調用show(), pack(), 或者setVisible(true)。

將一個組件加到一個已經被實現的容器中。

單一線程規則的根源是由于Swing組件庫的大部分方法是對多線程不安全的。

為了支持單一線程模型,Swing組件庫提供了一個專門來完成這些與Swing組件相關的操作的線程,而這一線程就是event-dispatching thread。我們的事件響應方法通常都是由這一線程調用的,除非你自己編寫代碼來調用這些事件響應方法。在這里初學者經常犯的一個錯誤就是在事件響應方法中完成過多的與修改組件沒有直接聯系的代碼。其最有可能的效果就是導致組件反應緩慢。比如以下響應按鈕事件的代碼:

  1. String str = null;  
  2. this.textArea.setText("Please wait...");  
  3. try {  
  4. //do something that is really time consuming  
  5. str = "Hello, world!";  
  6. Thread.sleep(1000L);  
  7. } catch (InterruptedException e) {  
  8. e.printStackTrace();  
  9. }  
  10. this.textArea.setText(str); 

執行之后的效果就是按鈕似乎定住了一段時間,直到Done.出現之后才彈起來。原因就是Swing組件的更新和事件的響應都是在event-dispatching thread中完成的,而事件響應的時候,event-dispatching thread被事件響應方法占據,所以組件不會被更新。而直到事件響應方法退出時才有可能去更新Swing組件。
  
為了解決這個問題,有人也許會試圖通過調用repaint()方法來更新組件:

  1. final String[] str = new String[1];  
  2. this.jTextArea1.setText("Please wait...");  
  3. this.repaint();  
  4.  
  5. try {  
  6. Thread.sleep(1000L);  
  7. }catch(InterruptedException e) {  
  8. e.printStackTrace();  
  9. }  
  10. str[0] = "Done.";  
  11.  
  12. jTextArea1.setText(str[0]); 

【編輯推薦】

  1. 介紹學習Swing AWT
  2. 透視Synth與Swing的外觀
  3. TikeSwing創建MVC體系結構
  4. 對Java Swing經驗的討論
  5. JFC和Swing中的JLabel組件
責任編輯:佚名 來源: 中國IT實驗室
相關推薦

2009-07-15 11:02:32

Swing組件

2009-07-14 17:21:42

Swing組件

2009-07-15 13:06:38

Swing組件

2009-07-10 10:19:57

JFormattedTSwing

2009-07-15 18:06:38

Swing線程

2009-07-10 13:20:37

Swing容器組件

2009-07-10 18:06:59

JTree Swing

2009-07-17 12:54:13

2009-07-10 14:58:13

JLabel組件JFC和Swing

2009-07-15 10:52:13

JTree組件

2009-07-10 12:30:12

Swing組件

2009-07-17 11:13:46

AWT和SwingSwing組件

2009-07-10 10:08:59

Spinner ModSwing組件

2009-07-14 18:05:28

輕量級Swing組件

2009-07-17 14:38:51

輕量級Swing組件

2009-07-10 17:03:17

AWT組件Swing組件

2009-07-17 10:31:18

paint方法Swing組件

2009-07-16 10:11:06

渲染器RendererSwing組件

2012-01-17 13:16:34

JavaSwing

2009-07-16 11:19:48

外部線程Swing組件
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 97人人超碰| 蜜桃视频成人 | 一区二区三区高清 | 欧美精品tv| 亚洲一区二区三区 | 久久精品亚洲精品国产欧美kt∨ | 欧美福利久久 | 国产高清精品一区二区三区 | 99re热精品视频 | 日韩视频在线免费观看 | 欧美一级片在线 | 久久久精品综合 | 韩日三级 | 综合久久99| 中文字幕一区二区三区四区 | 国产网站在线免费观看 | 成人小视频在线观看 | 精品国产乱码久久久久久蜜臀 | 波多野结衣av中文字幕 | 国产99免费视频 | 欧美 日韩 中文 | 99精品一区二区三区 | 久草视频在 | 免费精品视频在线观看 | 日韩手机在线看片 | 久久综合久色欧美综合狠狠 | 久久美女视频 | 成人小视频在线观看 | 日韩在线一区二区三区 | 亚洲精品久久久久久国产精华液 | 久久综合伊人一区二区三 | 欧美精品一区二区三区蜜臀 | 伊人看片| 国产综合精品一区二区三区 | 亚洲精品国产成人 | 国产欧美一级二级三级在线视频 | www.久久99| 午夜成人在线视频 | 欧美日韩精品一区二区三区蜜桃 | 99久久精品免费看国产四区 | 久久国产精品久久 |