如何在SWT中使鼠標的狀態變成忙碌

Eclipse Plug-in開發離不開與用戶的交互,我們往往把用戶的鼠標點擊之類動作所調用的代碼包裝成一個Action。例如,如果用戶點擊了一個Menu Item,那麼綁定到這個Menu Item上的Action就會運行,這一切都很直觀。但是有的時候,用戶觸發的操作可能需要很長時間才能完成,比如連接數據庫,在這種情況下,就必須把鼠標的狀態改爲忙碌,這樣就可以用沙漏手勢提示用戶當前操作正在進行,也避免了用戶在等待當前操作的時候又去觸發其他的操作。那麼如何實現這一點呢?Eclipse有一個High-level的實現,也有一個Low-level的實現。因爲後者非常簡單,而且在大多數情況下也能滿足需求,所以這裏會介紹後者。

我們可以在org.eclipse.swt.custom包中找到一個BusyIndicator類,它的Java Doc說得好:Support for showing a Busy Cursor during a long running process。該類只有一個static的方法,讓我們來看看它的簽名:

public static void showWhile(Display display, Runnable runnable)


其中,display參數指定了Busy Cursor應該顯示在哪裏,如果傳入null,則默認使用當前線程的當前Display;runnable就是封裝了我們要執行的操作的對象。這個方法會執行runnable中的操作,同時顯示Busy Cursor,當runnable結束後,鼠標的狀態就會恢復爲正常。OK,讓我們來看一個例子:

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章