在线上选择了错误的变量 tenSecs.set text(Integer.to string(i ++);
以下代码允许我初始化一个计时器,当它启动时,它会向显示器添加一个计时器oneSecs。
javax.swing.Timer tm = new javax.swing.Timer(1000, new ActionListener() {
public void actionPerformed(ActionEvent evt) {
AddOneActionPerformed(evt);
}
});
private void StartStopTimerActionPerformed(java.awt.event.ActionEvent evt) {
if (!tm.isRunning()) {
tm.start();
} else {
tm.stop();
}
ScheduledExecutorService e= Executors.newSingleThreadScheduledExecutor(); //Start new scheduled executor service to invoke a timer that start wehn button is pressed
e.scheduleAtFixedRate(new Runnable() {
@Override
public void run() {
//Follow this Override to do task
SwingUtilities.invokeLater(new Runnable() {
//Override will let the task run
@Override
public void run() {
oneSecsDisplay.setIcon(new ImageIcon("images\\" + TextGrabber() + ".png"));
oneSecs.setText( DigitValue.getText());
int i = 0;
if (Integer.parseInt(oneSecs.getText()) == i) {
tenSecs.setText(Integer.toString(i++));
}
}
});
}
}, 0, 100, TimeUnit.MILLISECONDS); //Update will be for every 100 milliseconds concurrent to system time
}
// Variables declaration - do not modify
private javax.swing.JTextField oneSecs;
private javax.swing.JTextField tenSecs;
// End of variables declaration
答案 0 :(得分:1)
请注意,您在程序中使用了两个非常类似命名的变量。一个是tenSecs
,其声明是您向我们展示的,另一个是tensecs
,您尚未展示,并且从错误中判断,它被定义为{{1} }}
使用两个命名非常接近的变量并不是一个很好的做法。假设您想保留一个表示整数值int
的变量。不要将变量命名为tenSecs
,tensecs
或tenSECS
或类似的任何内容。差异容易被忽视,发现这样的错误非常困难。使用类似tenSecss
之类的名称。
因此,要解决此问题,只需在代码中将tenSecsIntValue
替换为tensecs
。