自动刷新 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);
}

但是以上内容并没有刷新页面。

不要在事件调度线程上睡觉。相反,请将SwingWorkerJProgressBar结合使用,如如何使用进度条中所示。如果您正在从文件中读取,ProgressMonitorInputStream可能很方便。

您应该在事件调度线程上更新面板。如果您还在 EDT 上调用Thread.sleep,则由于线程处于睡眠状态,因此无法重新绘制面板。

如果要每秒更新大小,可以考虑使用Timer(Swing 版本,而不是 java.util 版本(并在该计时器的ActionListener中更新面板的大小。

不确定这是否是代码中的拼写错误,您的意思是"gauge"iso "guage",但在这种情况下,网络上有一些非常好的仪表示例

相关内容

最新更新