Java Swing GUI沙漏

5

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

如何显示一个沙漏或类似效果,让用户知道正在处理数据?在任务完成之前不要再次点击选项卡。

5个回答

26

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

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

完成后再将其设置回去。

component.setCursor(Cursor.getDefaultCursor());

1
太棒了,它简单而有效。 - Frank

6

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


为此,我希望长时间运行的任务在单独的线程中完成。 - Powerlord
我会尝试这个,很有道理,这样用户就知道需要等多久了。 - Frank

3

setCursor(int)已被弃用。这个方法可能更加简洁:

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

0

0

我会像其他人提到的那样

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接