5

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

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

4

5 回答 5

26

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

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

然后在完成后将其放回原处。

component.setCursor(Cursor.getDefaultCursor());
于 2009-12-21T16:21:33.197 回答
6

JProgressBar (可能处于不确定模式)听起来不错- 将其放在选项卡上,直到获取数据。设计良好的 UI 不应强迫用户等待长时间运行的任务完成,而是允许他们在其间做其他事情。

于 2009-12-21T16:12:24.273 回答
3

不推荐使用 setCursor(int)。这可能更干净一点:

setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));
于 2009-12-21T16:24:19.730 回答
0

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

于 2009-12-21T19:14:35.310 回答
0

我会像其他人提到的那样

  • 改变光标
  • 使用 SwingWorker
  • 在玻璃窗格中显示进度条或动画图像
  • 任务完成后隐藏玻璃窗
  • 恢复默认光标
于 2009-12-28T08:55:11.947 回答