我知道所有其他类似的问题,但我似乎无法解决问题。我试过“bar.repaint();”和“bar.update(bar.getGraphics());”但它们似乎都不起作用。
如果有人有时间快速浏览一下,我真的很感激!这真的让我烦恼,我一直试图解决它几个小时。
它基本上是一个关机计时器。您输入小时和秒,它会倒计时,直到它关闭计算机。它还有一个进度条,这就是问题所在。它似乎不想在每一秒后重绘自己。
这是很多代码,所以我决定只上传所有文件(2个文件)。
speedyshare.com/files/29072975/files.zip
提前致谢!
编辑:
无效的代码片段:
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton1ActionPerformed
try{
if(varHours.getText() != null && varMins.getText() != null){
Thread countDownThread = new Thread(new Countdown(Integer.parseInt(varHours.getText()), Integer.parseInt(varMins.getText())));
int totalSecs = (Integer.parseInt(varHours.getText())*60*60) + (Integer.parseInt(varMins.getText())*60);
shutdownProgress = new javax.swing.JProgressBar(0, totalSecs);
countDownThread.start();
}else{
javax.swing.JOptionPane.showMessageDialog(null, "Please supply both fields!", "One or more fields were not supplied", javax.swing.JOptionPane.INFORMATION_MESSAGE);
}
}catch(Exception ex){
javax.swing.JOptionPane.showMessageDialog(null, "Error!\nCould not launch method countDown!", "Error!", javax.swing.JOptionPane.ERROR_MESSAGE);
}
}//GEN-LAST:event_jButton1ActionPerformed
答案 0 :(得分:1)
在jButton1ActionPerformed
中设置shutdownProgress
。但是,这是一个新的JProgressBar,而不是initComponents()
中创建的那个。因此,您稍后对shutdownProgress
所做的任何更改都会发送到未显示的JProgressBar。
其次,从EDT以外的线程更改Swing组件是一个主要的禁忌。 使用SwingUtilitities .invokeLater。