按下按钮时的 Java 计时器

标签 java swing timer

我对java很陌生,我试图在按下按钮时启动计时器,但无法启动它。我尝试了几行代码,但似乎没有任何效果。

我已经声明了我的标签、文本字段和计时器:

private JTextField JTFHours;
private JTextField JTFMinutes;
private JTextField JTFSeconds;
private int ticks = 0;
private Timer timer;

之后在创建 GUI 中我有这个

JLTimer = new JLabel("     DIGITAL TIMER     ");
jPRightTimer.add(JLTimer);
JTFHours = new JTextField(2);
jPRightTimer.add(JTFHours);
JLTimer = new JLabel(" : ");
jPRightTimer.add(JLTimer);
JTFMinutes = new JTextField(2);
jPRightTimer.add(JTFMinutes);
JLTimer = new JLabel("  :  ");
jPRightTimer.add(JLTimer);
JTFSeconds = new JTextField(2);
jPRightTimer.add(JTFSeconds);
timer = new Timer(1000, this);
timer.start();

在我的事件方法中,我有这个:

Object source = event.getSource();

if (source == jBRun) {
    JTFHours.setText(Integer.toString(ticks / 360));
    JTFMinutes.setText(Integer.toString(ticks / 60));
    JTFSeconds.setText(Integer.toString(ticks % 60));
    ticks = ticks + 1;
}

如果我按下运行按钮,计时器不会启动。

最佳答案

我的猜测是,问题在于计时器始终是事件的源,这意味着如果语句永远不为真,则 JButton 永远不会成为源。尝试使用这个。

//Do the stuff you had

JButton button = new JButton("Start");
int ticks = 0;

Timer t = new Timer(1000, (event) -> {
    JTFHours.setText(Integer.toString(ticks / 360));
    JTFMinutes.setText(Integer.toString(ticks / 60));
    JTFSeconds.setText(Integer.toString(ticks % 60));
    ticks = ticks + 1;
});

button.addActionListener((event) -> t.start());

关于按下按钮时的 Java 计时器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48760762/

相关文章:

Java : Where exactly the Properties would be configured?

java - 查找 Swing/AWT 对象的 "real"高度/宽度

java - 查看窗口是否失去焦点

java - 为什么我的KeyAdapter总是落后一步?

java - 有没有一种优雅的方式来处理 Blackjack 中的 A?

java - 推断我的垃圾收集日志

actionscript-3 - actionscript 3.0 如何设置时间延迟

windows-phone-7 - 在给定延迟后执行方法的简单方法?

java - 使用 JS/jQuery/AJAX 和 Controller 在 Java 中分页

ios - SKAction 构建计时器/计分器