日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關咨詢
選擇下列產(chǎn)品馬上在線溝通
服務時間:8:30-17:00
你可能遇到了下面的問題
關閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
Swing應用程序框架的學習

最近為一個東西寫個界面,覺得用SWT&JFace比較麻煩,再說JFace我也沒完全會,就干脆用Swing了。不過發(fā)現(xiàn)Swing和SWT貌似還是有比較多的不同的。所以,仔細看了看。下面是收集的資料。中文的資料多半都是翻譯的Introduction To Swing Application Framework的,但是翻譯的很爛。推薦把這篇文章放到最后讀,因為這篇文章寫的不是很好,屬于不懂的人看了不太懂,懂的人看了就更懂的那種,簡單來說細節(jié)寫的不清楚,盲點很多。

學Swing應用程序框架估計主要要了解以下幾點:

1. 應用程序框架提供了什么功能,如何幫助用戶管理應用程序的各個方面的。(想必下面這個圖已經(jīng)說明的很清楚了,大家只要照著圖,按圖索驥,把幾個類之間的關系和功能搞明白就行了)

2. Swing中的工作線程(這個主要就是要把工作線程和事件派發(fā)處理線程之間相互獨立出來 ,以免造成界面假死的情況。再就是這么做了之后,就涉及到兩個線程之間的通信問題。主要就是搞清楚如何寫工作線程,以及工作線程如何和事件派發(fā)處理線程相互交互的)

3.再就是一些高級玩意了,如何把bean和某個組件進行綁定,將界面操作省時省力的直接反映到DB中。

Swing Tutorial      Swing教程
http://java.sun.com/docs/books/tutorial/uiswing/
(主要介紹了Swing的基本構(gòu)成,基礎的基礎,知道組件,容器和布局,以及Swing中的并發(fā)的可以跳過)

Using the swing application framework     如何使用Swing應用程序框架
http://java.sun.com/developer/technicalArticles/javase/swingappfr/
(一篇快速入門的好教程)

Improve Application Performance with SwingWorker In J2SE6     如何利用SwingWorker改進程序性能
http://java.sun.com/developer/technicalArticles/javase/swingworker/index.html
(Swing中的工作線程的問題)

Swing & Thread     Swing和線程
http://java.sun.com/products/jfc/tsc/articles/threads/threads1.html
(還是工作線程的問題)

Introduction to swing application framework     Swing應用程序框架介紹
https://appframework.dev.java.net/intro/index.html
(這篇文章還是介紹,主要解決快速入門中某些沒提到的盲點的,也是一篇總覽性的文章)

補充:

關于SwingTask&Task

Task是Swing應用程序框架對SwingTask的一個補充之后的子類,除了添加點無關緊要的方法,沒多大變化,所以下面對這個表示工作的類做一個無差別性的敘述。

在Swing里面主要有三類線程,

一類啟動其他兩類線程,所以又叫做初始線程

一類構(gòu)造UI并且處理UI上面產(chǎn)生的點擊等事件,所以又叫做事件派發(fā)線程,Event Dispatcher Thread,簡稱EDT。這類線程必須通過SwingUtilities里面的invokeLater以及變種方法來啟動。

還有一類就是后臺工作線程。

為了避免直接在EDT上面處理耗時的任務,卡在那里,影響了UI的重畫,造成界面假死,所以要用后臺的工作線程來處理這類耗時的任務。完成了后臺耗時的任務之后,還需要把結(jié)果返回給UI線程,然后讓其在界面上面顯示。為此,設計了一個Task類,這個類包含了3個重要的三個方法。

doInBackground方法 所有耗時的工作都在這個方法內(nèi)完成,這個方法將運行在工作線程上。完成后返回結(jié)果值,Task類自動幫你把結(jié)果存好。

get方法 這個方法就用來取得結(jié)果的。一般在done方法里面使用這個get方法

done方法 當doInBackground完成任務,返回結(jié)果,并且被Task類自動存好后,就會在EDT線程上面調(diào)用這個方法,你可以在這個方法里面用get方法獲得處理的結(jié)果,然后將其顯示到UI上面。

問題來了,當你集成了Task,寫好了這3個方法,如何啟動這個后臺任務呢?
那就需要你在其他兩個線程中,調(diào)用Task的execute方法了,當這個方法調(diào)用之后,Task類就自動建立一個工作線程,然后把 doInBackground放在這個線程里面跑,跑完了這個工作線程就結(jié)束了。然后,就自動切到EDT線程上,掉用done方法,done方法中利用 get取得結(jié)果,顯示到UI上面。(如何放到UI上面顯示呢,這就要靠你在new一個Task的時候,把UI的引用傳進來了,或者你就干脆建成一個UI類的靜態(tài)內(nèi)部類,又叫嵌入類來著吧,你就省掉傳UI的引用的麻煩了)

在Swing應用程序框架中,你只需要實現(xiàn)一個返回Task類型的事件處理方法,框架會自動調(diào)用Task的execute方法,你就省去手動調(diào)用的麻煩了。

還有個問題,Task類是如何把done放到EDT上面執(zhí)行的呢? 這個我還沒弄明白。希望深入了解的人指導一下。


當前文章:Swing應用程序框架的學習
路徑分享:http://www.dlmjj.cn/article/dhigpej.html