Java Swing GUI小时玻璃

在我的Swing程序中有一个JTabbedPane 。 当用户单击选项卡时,程序需要一段时间才能获取数据并处理结果,然后在所选选项卡中显示结果。

如何显示沙漏或某种效果,以便用户知道它的处理数据? 在完成作业之前不要再次单击选项卡。

JProgressBar (可能在非常模式下)听起来正确 – 将其放在选项卡上,直到获取数据为止。 精心设计的UI不应强迫用户等待长时间运行的任务完成,而是允许用户在中间执行其他操作。

最简单的方法是使用适当的Cursor在适当的组件(可能是顶级窗口)上调用setCursor 。

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

然后在完成后将其设置回来。

 component.setCursor(Cursor.getDefaultCursor()); 

不推荐使用setCursor(int)。 这可能有点清洁:

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

正如其他答案所提到的,您可以设置等待光标,但您也提到了阻止其他鼠标点击。 在长时间操作完成之前,您可以使用玻璃窗格来防止对组件的单击。 除了玻璃窗格上的Sun教程之外,还有一个很好的例子, 请访问http://www.java2s.com/Code/Java/Swing-JFC/DemonstrateuseofGlassPane.htm

我会像其他人提到的那样

  • 改变光标
  • 使用SwingWorker
  • 在玻璃板中显示进度条或动画图像
  • 任务完成后隐藏玻璃板
  • 恢复默认光标