N次执行后停止摆动计时器

时间:2015-11-09 20:52:35

标签: java swing timer

我写了这个Swing计时器,应该运行10次然后停止。但是,编译器说NUM_CORES = ... # Choose how many cores to use. sess = tf.Session( config=tf.ConfigProto(inter_op_parallelism_threads=NUM_CORES, intra_op_parallelism_threads=NUM_CORES)) 未初始化。我不想初始化它并且我不需要(here是一个未初始化并且有效的示例)。有什么问题?

Timer

3 个答案:

答案 0 :(得分:5)

有一种方法可以避免引用外部计时器变量。

计时器实际上是您ActionListener每次收到的事件的来源。因此,您可以致电e.getSource()

来访问它

这样,您甚至不需要提前声明计时器:

ActionListener a = new ActionListener() {
    int time=0;
    @Override
    public void actionPerformed(ActionEvent e) {


        System.out.println("hello");

        if (++time > 10) {
            Timer timer = (Timer)e.getSource();
            timer.stop();
            System.exit(0);
        }
    }
};

new Timer(1000,a).start();

请注意,调用此类System.exit()无论如何都会停止计时器。实际上不建议像这样调用System.exit()

答案 1 :(得分:4)

picTimer的声明移动到类级别,以便不需要在构造函数的本地范围内初始化该变量

答案 2 :(得分:2)

在您链接到的示例中,timer字段,而在您的代码中,它是本地变量。您可以通过以下两种方式解决您的问题:

  1. 使timer字段与示例相同。
  2. 使用null初始侦听器创建计时器,以便在创建动作侦听器时可以引用实际的计时器实例。然后使用Timer.addActionListener()添加侦听器。