2011-08-18 35 views
4

我有一个带有JTable的java小程序。由于大量数据和较差的网络带宽,执行任何操作(如加载表格或更改它)需要大量时间。 我在考虑添加一些活动指标,让用户知道他的请求正在处理中。 在我使用JProgressBar之前,我想知道是否有其他选项,如阿贾克斯活动花。JTable等待指示器

+2

你能提供一个链接“阿贾克斯活动花“? – trashgod

+1

您现在的位置:http://www.ajaxload.info/ – Misha

回答

4

最简单的方法是设置一个(非动态)WAIT_CURSOR

// Setting cursor for any Component: 
    component.setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR)); 
    doProcessing(); 
    component.setCursor(Cursor.getDefaultCursor()); 

http://www.catalysoft.com/articles/busyCursor.html

对于动画光标看到:

http://book.javanb.com/swing-hacks/swinghacks-chp-12-sect-2.html

+0

尽管以前的答案也很棒,但这对我来说已经足够了。然而,我看到奇怪的行为,在我的小程序的一部分,光标处于等待状态,而另一部分是常规的。我可以使它成为applet所有组件的相同状态吗? – Misha

+0

@Mike:如果两个区域共享一个共同的Container,['setCursor()'](http://download.oracle.com/javase/6/docs/api/java/awt/Component.html#setCursor %28java.awt.Cursor%29)应该在“子组件上工作,除了那些具有非空游标的子组件”。 – trashgod

3

SwingWorker是为此设计的,如example中所建议的。特别是,“需要注意的是它的安全变异从工艺方法里面tableModel,因为它是在事件调度线程中调用。” - publish()

3

您可以使用JBusyComponent这一点。只需将你的Table或Scrollpane包装在JBusyComponent中。但请记住在事件分派线程之外加载数据。为此,您可以按照其他答案中的建议使用SwingWorker。 JBusyComponent已经为此提供了一个BusySwingWorker。