我有一个问题,我在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();
}
});
}
}
感谢
答案 0 :(得分:4)
在这里,
以下是我的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并在其中显示标签的Main类,
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传递给第一类,第一类使用它来显示计时器。
答案 1 :(得分:2)
您需要按照以下步骤进行操作
在这里第一步,构造函数将接受来自其他类的预定义JLabel并使用它们来显示计时器。