gpt4 book ai didi

Java Swing 定时器没有启动?

转载 作者:行者123 更新时间:2023-11-30 09:07:10 24 4
gpt4 key购买 nike

我编写此程序是为了测试 Swing 的计时器。它编译良好并且没有运行时错误,但它一启动就停止并且屏幕上没有弹出任何内容。这是我在网上找到的示例代码的略微修改版本,因此它应该可以正常工作。我不知道代码有什么问题:

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

public class Time
{
int sec=0;
int min=0;

public Time()
{
ActionListener taskPerformer = new ActionListener()
{
int sec=0;
int min=0;
public void actionPerformed(ActionEvent evt)
{
if(sec==60)
{
sec = 0;
min++;
}
System.out.println("Time passed: " + min + ":" + sec);
if(min==2)
System.exit(0);
}
};
Timer timer = new Timer( 1000 , taskPerformer);
timer.start();
}

public static void main(String[] args)
{
Time timer = new Time();
}
}

最佳答案

javax.swing.Timer 在其核心使用了一个daemon 线程。这意味着一旦 main 方法存在,JVM 就会终止。

您可以尝试使用 java.util.Timer 或创建某种框架以便启动 EDT

边注:

你没有增加 sec 变量

例如……

import java.awt.EventQueue;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JFrame;
import javax.swing.Timer;
import javax.swing.UIManager;
import javax.swing.UnsupportedLookAndFeelException;

public class Time {

int sec = 0;
int min = 0;

public Time() {
EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
try {
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
} catch (ClassNotFoundException | InstantiationException | IllegalAccessException | UnsupportedLookAndFeelException ex) {
ex.printStackTrace();
}

JFrame frame = new JFrame("Testing");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.pack();
frame.setLocationRelativeTo(null);

ActionListener taskPerformer = new ActionListener() {
int sec = 0;
int min = 0;

public void actionPerformed(ActionEvent evt) {
if (sec >= 60) {
sec = 0;
min++;
}
System.out.println("Time passed: " + min + ":" + sec);
if (min == 2) {
System.out.println("Terminate");
System.exit(0);
}
sec++;
}
};
Timer timer = new Timer(1000, taskPerformer);
timer.start();
}
});
}

public static void main(String[] args) {
Time timer = new Time();
}
}

关于Java Swing 定时器没有启动?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24102757/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com