本節書摘來自華章計算機《java數字圖像處理:程式設計技巧與應用實踐》一書中的第3章,第3.4節,作者 賈志剛,更多章節内容可以通路雲栖社群“華章計算機”公衆号檢視。
在學習jbutton事件響應的知識之前,首先來看一下swing中如何實作對使用者事件的監聽與處理,認識一下swing中事件響應最重要的線程—事件分派線程。
在swing中有一個特殊的線程被稱為swing事件配置設定線程,如果對ui元件的操作不在swing事件分派線程中,swing将抛出異常。檢測目前線程是否為事件分派線程可以通過swing本身提供的一個簡單方法swingutilities.iseventdispatchthread()來完成。對swing ui元件的重新整理、重繪等必須都在事件分派線程中完成,這是因為swing元件本身的設計不是線程安全的,是以通過一個特殊的線程—事件分派線程來實作對所有元件的更新與重繪,這樣就保證了swing元件操作的線程安全性。
jbutton元件是java swing中實作使用者互動最常用的元件,當使用者單擊對應的jbutton元件時,swing通過監聽元件添加actionlistener對象執行個體,來實作對jbutton元件單擊事件的監聽與響應處理,其響應處理則通過實作actionlistener接口的actionperformed()方法來完成。很多時候,在單擊jbutton按鈕以後,雖然有很多事情要做,但還是希望ui可以繼續響應使用者操作,這時可使用swingwork來完成使用者的操作并重新整理ui顯示。
在對swing事件響應機制有初步了解以後,下面看一下在正式的項目程式設計中swing如何實作對jbutton事件監聽與響應。其實作過程大緻可以分為兩步完成。
1)實作actionlistener接口,最常見的是由定義jbutton元件的類來實作actionlistener接口。
2)根據actionevent.getactioncommand()得到的文本常量響應相應的使用者操作。