自动刷新JPanel面板

时间:2011-12-31 17:44:34

标签: java swing jpanel

我正在开发一个应该根据我从文件或数组中读取的值自动调整条形的程序。我已将两个JPanel放在另一个中,一个是静态的,另一个应该从数组/文件中获取其值。我的问题是当你读取我要更新JPanel参数的数组或文件时。下面是我的示例代码。

int myvalues[] = {120,130,140,150,160,170,180};

for(int i = 0; i <= myvalues.length-1; i++){
    guagePanel.setSize(10,myvalues[i]);
    Thread.sleep(1000);
}

但上面的内容并没有让网页刷新。

2 个答案:

答案 0 :(得分:2)

不要在event dispatch thread上睡觉。相反,请将SwingWorkerJProgressBar结合使用,如How to Use Progress Bars所示。如果您正在阅读文件,ProgressMonitorInputStream可能很方便。

答案 1 :(得分:2)

您应该在事件发送线程上更新您的面板。如果你也在EDT上拨打Thread.sleep,那么由于线程处于休眠状态,你的面板无法重新绘制。

如果您想每秒更新一次,可以考虑使用Timer (the Swing version, not the java.util version)并在该计时器的ActionListener中更新面板的大小。

不确定它是否是代码中的拼写错误并且您的意思是'规范'iso'guage',但在这种情况下,网络上有some really nice examples of gauges