Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/403.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
javax定时器问题?_Java_Swing_Timer - Fatal编程技术网

javax定时器问题?

javax定时器问题?,java,swing,timer,Java,Swing,Timer,我对java还是个新手,在多个网站上学习了一个计时器的在线教程,我想为我的GUI程序制作一个计时器,但我想先在一个标准循环上测试一下计时器 import javax.swing.*; import java.awt.*; class main { public static void main(String Args[]) { ActionListener changelight = new ActionListener(); int delay = 1

我对java还是个新手,在多个网站上学习了一个计时器的在线教程,我想为我的GUI程序制作一个计时器,但我想先在一个标准循环上测试一下计时器

import javax.swing.*;
import java.awt.*;

class main {
    public static void main(String Args[]) {
        ActionListener changelight = new ActionListener();
        int delay = 1000;
        Timer timer = new Timer(delay, changelight);
        timer.start();
    }

    public void actionPerformed(ActionEvent e) {
            for (int a=0; a<=1000; a++) {
            System.out.printf("%d \n", a);
            }
        return;
    }
}
import javax.swing.*;
导入java.awt.*;
班长{
公共静态void main(字符串参数[]){
ActionListener changelight=新建ActionListener();
int延迟=1000;
定时器=新定时器(延迟、变更灯);
timer.start();
}
已执行的公共无效操作(操作事件e){

for(int a=0;a
ActionListener
是一个接口,而不是一个类,这意味着您必须实现如下所示的方法:

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.Timer;

public class Main {

    public static void main(String args[]){
        final ActionListener action = new ActionListener(){
            public void actionPerformed(final ActionEvent e){
                for(int i = 0; i <= 1000; i++)
                    System.out.printf("%d\n", i);
            }
        };
        final Timer timer = new Timer(1000, action);
        timer.start();
    }
}
导入java.awt.event.ActionEvent;
导入java.awt.event.ActionListener;
导入javax.swing.Timer;
公共班机{
公共静态void main(字符串参数[]){
最终ActionListener操作=新建ActionListener(){
已执行的公共无效行动(最终行动事件e){
对于(int i=0;i{

for(int i=0;i
ActionListener
是一个接口,而不是一个类,这意味着您必须实现如下所示的方法:

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.Timer;

public class Main {

    public static void main(String args[]){
        final ActionListener action = new ActionListener(){
            public void actionPerformed(final ActionEvent e){
                for(int i = 0; i <= 1000; i++)
                    System.out.printf("%d\n", i);
            }
        };
        final Timer timer = new Timer(1000, action);
        timer.start();
    }
}
导入java.awt.event.ActionEvent;
导入java.awt.event.ActionListener;
导入javax.swing.Timer;
公共班机{
公共静态void main(字符串参数[]){
最终ActionListener操作=新建ActionListener(){
已执行的公共无效行动(最终行动事件e){
对于(int i=0;i{

for(int i=0;i
ActionListener
是一个接口,而不是一个类,这意味着您必须实现如下所示的方法:

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.Timer;

public class Main {

    public static void main(String args[]){
        final ActionListener action = new ActionListener(){
            public void actionPerformed(final ActionEvent e){
                for(int i = 0; i <= 1000; i++)
                    System.out.printf("%d\n", i);
            }
        };
        final Timer timer = new Timer(1000, action);
        timer.start();
    }
}
导入java.awt.event.ActionEvent;
导入java.awt.event.ActionListener;
导入javax.swing.Timer;
公共班机{
公共静态void main(字符串参数[]){
最终ActionListener操作=新建ActionListener(){
已执行的公共无效行动(最终行动事件e){
对于(int i=0;i{

for(int i=0;i
ActionListener
是一个接口,而不是一个类,这意味着您必须实现如下所示的方法:

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.Timer;

public class Main {

    public static void main(String args[]){
        final ActionListener action = new ActionListener(){
            public void actionPerformed(final ActionEvent e){
                for(int i = 0; i <= 1000; i++)
                    System.out.printf("%d\n", i);
            }
        };
        final Timer timer = new Timer(1000, action);
        timer.start();
    }
}
导入java.awt.event.ActionEvent;
导入java.awt.event.ActionListener;
导入javax.swing.Timer;
公共班机{
公共静态void main(字符串参数[]){
最终ActionListener操作=新建ActionListener(){
已执行的公共无效行动(最终行动事件e){
对于(int i=0;i{

对于(int i=0;i您的示例不起作用,因为ActionListener是一个接口,您无法实例化它。相反,您需要创建将实现它的类(或者将implements ActionListener添加到类main中,然后实现actionPerformed)

即使你有这个权利,你的程序也会在第一个事件到来之前完成,因此不会调用actionPerformed。要观察某些情况,你需要一段代码,它会“阻止你的程序过早地结束”,为此,你可以使用简单的JFrame对象

下面是一个工作示例:

import javax.swing.*;

import java.awt.*;
import java.awt.event.*;

class TimerAction implements ActionListener{

    boolean isItTimeForTic = true;

   @Override public void actionPerformed(ActionEvent e) {
      if( isItTimeForTic ) {
         isItTimeForTic = false;
            System.out.println("tic ");
      }
      else {
         isItTimeForTic = true;
         System.out.println("tac ");
      }
   }
}

public class TimerTest {

   public static void main(String Args[] ) {
      int delay = 1000;
      Timer timer = new Timer(delay, new TimerAction());

      timer.start();
      JFrame frame = new JFrame();
      frame.setVisible(true);
   }
}

您的示例不起作用,因为ActionListener是一个接口,您无法实例化它。相反,您需要创建将实现它的类(或将implements ActionListener添加到类main,然后实现actionPerformed)

即使你有这个权利,你的程序也会在第一个事件到来之前完成,因此不会调用actionPerformed。要观察某些情况,你需要一段代码,它会“阻止你的程序过早地结束”,为此,你可以使用简单的JFrame对象

下面是一个工作示例:

import javax.swing.*;

import java.awt.*;
import java.awt.event.*;

class TimerAction implements ActionListener{

    boolean isItTimeForTic = true;

   @Override public void actionPerformed(ActionEvent e) {
      if( isItTimeForTic ) {
         isItTimeForTic = false;
            System.out.println("tic ");
      }
      else {
         isItTimeForTic = true;
         System.out.println("tac ");
      }
   }
}

public class TimerTest {

   public static void main(String Args[] ) {
      int delay = 1000;
      Timer timer = new Timer(delay, new TimerAction());

      timer.start();
      JFrame frame = new JFrame();
      frame.setVisible(true);
   }
}

您的示例不起作用,因为ActionListener是一个接口,您无法实例化它。相反,您需要创建将实现它的类(或将implements ActionListener添加到类main,然后实现actionPerformed)

即使你有这个权利,你的程序也会在第一个事件到来之前完成,因此不会调用actionPerformed。要观察某些情况,你需要一段代码,它会“阻止你的程序过早地结束”,为此,你可以使用简单的JFrame对象

下面是一个工作示例:

import javax.swing.*;

import java.awt.*;
import java.awt.event.*;

class TimerAction implements ActionListener{

    boolean isItTimeForTic = true;

   @Override public void actionPerformed(ActionEvent e) {
      if( isItTimeForTic ) {
         isItTimeForTic = false;
            System.out.println("tic ");
      }
      else {
         isItTimeForTic = true;
         System.out.println("tac ");
      }
   }
}

public class TimerTest {

   public static void main(String Args[] ) {
      int delay = 1000;
      Timer timer = new Timer(delay, new TimerAction());

      timer.start();
      JFrame frame = new JFrame();
      frame.setVisible(true);
   }
}

您的示例不起作用,因为ActionListener是一个接口,您无法实例化它。相反,您需要创建将实现它的类(或将implements ActionListener添加到类main,然后实现actionPerformed)

即使你有这个权利,你的程序也会在第一个事件到来之前完成,因此不会调用actionPerformed。要观察某些情况,你需要一段代码,它会“阻止你的程序过早地结束”,为此,你可以使用简单的JFrame对象

下面是一个工作示例:

import javax.swing.*;

import java.awt.*;
import java.awt.event.*;

class TimerAction implements ActionListener{

    boolean isItTimeForTic = true;

   @Override public void actionPerformed(ActionEvent e) {
      if( isItTimeForTic ) {
         isItTimeForTic = false;
            System.out.println("tic ");
      }
      else {
         isItTimeForTic = true;
         System.out.println("tac ");
      }
   }
}

public class TimerTest {

   public static void main(String Args[] ) {
      int delay = 1000;
      Timer timer = new Timer(delay, new TimerAction());

      timer.start();
      JFrame frame = new JFrame();
      frame.setVisible(true);
   }
}

@JasonBraucht你的观点是?我似乎不明白为什么这与上述问题有关。@JasonBraucht你的观点是?我似乎不明白为什么这与上述问题有关。@JasonBraucht你的观点是?我似乎不明白为什么这与上述问题有关。@JasonBraucht你的观点是?我似乎不明白为什么这与上述问题有关解决上述问题。由于OP只想测试计时器,所以应该在
计时器.start();
之后放置一个
线程.sleep(5000);
,这样程序就不会退出,这当然会杀死计时器。为什么要使用“final”在actionlistener之前。这意味着什么好处?@Bobski阅读了答案。+1对于Java 8 Lambda表达式,以前不知道它们!对,程序执行良好,但不会从循环中运行任何东西,因为OP只想测试计时器,所以应该在
计时器.start()之后放置
线程.sleep(5000);
这样程序就不会退出,这当然会杀死计时器。为什么在actionlistener之前使用“final”。这意味着什么好处?@Bobski阅读了答案。+1表示Java 8 Lambda表达式,不知道