整数不能被解除引用

时间:2014-11-07 18:13:15

标签: java swing increment

在线上选择了错误的变量 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

1 个答案:

答案 0 :(得分:1)

请注意,您在程序中使用了两个非常类似命名的变量。一个是tenSecs,其声明是您向我们展示的,另一个是tensecs,您尚未展示,并且从错误中判断,它被定义为{{1} }}

使用两个命名非常接近的变量并不是一个很好的做法。假设您想保留一个表示整数值int的变量。不要将变量命名为tenSecstensecstenSECS或类似的任何内容。差异容易被忽视,发现这样的错误非常困难。使用类似tenSecss之类的名称。

因此,要解决此问题,只需在代码中将tenSecsIntValue替换为tensecs