2009-12-21 105 views
3

在我的Swing程序中有一個JTabbedPane,當用戶單擊一個選項卡時,程序需要一段時間才能獲取數據並處理結果,然後在選定選項卡中顯示結果,我如何才能顯示一個小時玻璃杯或其他特殊效果,以便用戶知道它正在處理數據,而不是在它完成作業之前再次單擊該選項卡。Java Swing GUI小時玻璃

回答

6

A JProgressBar(可能處於indetermiante模式)聽起來是對的 - 把它放在標籤上,直到數據被提取。精心設計的用戶界面不應強迫用戶等待長時間運行的任務完成,而是允許用戶在其中間執行其他操作。

+0

爲此,我希望長期運行的任務在單獨的線程中完成。 – Powerlord 2009-12-21 16:24:43

+0

我會試試這個,有道理,所以用戶會知道要等多久。 – Frank 2009-12-21 17:11:21

24

最簡單的方法是在相應的組件(可能是頂級窗口)上撥打setCursor並使用相應的Cursor

component.setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR)); 

然後在完成後再設置它。

component.setCursor(Cursor.getDefaultCursor()); 
+1

太棒了,它簡單而有效。 – Frank 2009-12-21 17:10:35

+0

這幫了很多。謝謝。 – 2013-05-09 19:20:48

3

的setCursor(INT)已過時。這可能是有點清潔:

setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR)); 
0

一個很好的例子,我將作爲其它提及

  • 改變光標
  • 使用的SwingWorker
  • 顯示進度條或動畫圖像在玻璃上
  • 任務完成時隱藏玻璃板
  • 恢復默認光標