gpt4 book ai didi

java - 如何在单独的 J Frame Form 标签上显示 Java Timer?

转载 作者:行者123 更新时间:2023-11-29 07:15:47 26 4
gpt4 key购买 nike

我有一个问题,我在 java 中有这个计时器代码,当它执行时它会在自己的 JFrame 标签上显示一个倒计时计时器,我想做的是在另一个 JFrame 表单标签上显示这个计时器而无需移动其他类的代码。

我希望你们能帮我解决这个问题,谢谢你们。

这是 Timer 类的代码:

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

public class TimerExample extends JFrame {

final JLabel label;
Timer countdownTimer;
int timeRemaining = 10;

public TimerExample() {
setDefaultCloseOperation(EXIT_ON_CLOSE);
setSize(200, 200);
label = new JLabel(String.valueOf(timeRemaining), JLabel.CENTER);
getContentPane().add(label);

countdownTimer = new Timer(1000, new CountdownTimerListener());
setVisible(true);
countdownTimer.start();
}

class CountdownTimerListener implements ActionListener {
public void actionPerformed(ActionEvent e) {
if (--timeRemaining > 0) {
label.setText(String.valueOf(timeRemaining));
} else {
label.setText("Time's up!");
countdownTimer.stop();
}
}
}

public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
new TimerExample();
}
});
}

}

谢谢

最佳答案

在这里,

以下是我的 TestTimer 类,它接受 JLabel 作为输入

public class TestTimer {
private JLabel label;
Timer countdownTimer;
int timeRemaining = 10;

public TestTimer(JLabel passedLabel) {
countdownTimer = new Timer(1000, new CountdownTimerListener());
this.label = passedLabel;
countdownTimer.start();
}

class CountdownTimerListener implements ActionListener {
public void actionPerformed(ActionEvent e) {
if (--timeRemaining > 0) {
label.setText(String.valueOf(timeRemaining));
} else {
label.setText("Time's up!");
countdownTimer.stop();
}
}
}
}

这是另一个主类,它实际上扩展了一个 JFrame 并在其中显示了一个标签,

public class TimerJFrame extends JFrame{    
private static final long serialVersionUID = 1L;
private JLabel label;

public TimerJFrame() {
setDefaultCloseOperation(EXIT_ON_CLOSE);
setSize(200, 200);
label = new JLabel("10", JLabel.CENTER);
getContentPane().add(label);
new TestTimer(label);
setVisible(true);
}

public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
new TimerJFrame();
}
});
}
}

第二个代码将创建的 JLabel 传递给第一个类,第一个类使用它来显示计时器。

关于java - 如何在单独的 J Frame Form 标签上显示 Java Timer?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9721066/

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