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
- 在玻璃板中显示进度条或动画图像
- 任务完成后隐藏玻璃板
- 恢复默认光标