javax定时器问题?
我对java还是个新手,在多个网站上学习了一个计时器的在线教程,我想为我的GUI程序制作一个计时器,但我想先在一个标准循环上测试一下计时器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
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;aActionListener
是一个接口,而不是一个类,这意味着您必须实现如下所示的方法:
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;iActionListener
是一个接口,而不是一个类,这意味着您必须实现如下所示的方法:
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;iActionListener
是一个接口,而不是一个类,这意味着您必须实现如下所示的方法:
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;iActionListener
是一个接口,而不是一个类,这意味着您必须实现如下所示的方法:
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表达式,不知道