Java Swing GUI hour glass

情到浓时终转凉″ 提交于 2019-12-05 17:00:23

A JProgressBar (possibly in indetermiante mode) sounds right - put that on the tab until the data has been fetched. A well-designed UI shouldn't force the user to wait for long-running tasks to complete and instead allow them to do something else inbetween.

Dan Dyer

The simplest way is to just call setCursor on the appropriate component (probably the top-level window) with the appropriate Cursor.

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

And then set it back when you are done.

component.setCursor(Cursor.getDefaultCursor());

setCursor(int) is deprecated. This is probably a bit cleaner:

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

As the other answers mention, you can set a wait cursor, but you also mention preventing additional mouse clicks. You can use a glass pane to prevent clicks on components until the long operation is finished. In addition to the Sun tutorials on the glass pane, there is a nice example at http://www.java2s.com/Code/Java/Swing-JFC/DemonstrateuseofGlassPane.htm

I would as other mentioned

  • Change the cursor
  • Use a SwingWorker
  • Display the progressbar or an animated image in the glasspane
  • Hide the glasspane when the task is completed
  • Restore the default cursor
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!