我在写一个游戏,需要60秒的倒计时。当我点击“开始”按钮时,我希望它开始倒数。我可以把它手动倒计时,但需要它这样做自动。
这是一个Java小程序,而不是Javascript。
有什么方法可以让这个计时器在后台运行,而我使用其他按钮吗?我正在使用JLabels和JButtons。我能让两个ActionListeners同时运行吗?
发布于 2013-12-03 15:12:42
使用javax.swing.Timer
运行此示例。您将看到在运行时间时仍然可以执行其他操作。单击“是”或“否”按钮,时间正在流逝。
import java.awt.BorderLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JApplet;
import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.Timer;
public class Test extends JApplet {
private JLabel label1 = new JLabel("60");
private JLabel label2 = new JLabel("Yes");
private JButton jbt1 = new JButton("Yes");
private JButton jbt2 = new JButton("No");
private int count = 60;
private Timer timer;
public Test() {
JPanel panel1 = new JPanel(new GridLayout(1, 2));
panel1.add(label1);
panel1.add(label2);
label1.setHorizontalAlignment(JLabel.CENTER);
label2.setHorizontalAlignment(JLabel.CENTER);
JPanel panel2 = new JPanel();
panel2.add(jbt1);
panel2.add(jbt2);
add(panel1, BorderLayout.CENTER);
add(panel2, BorderLayout.SOUTH);
timer = new Timer(1000, new ActionListener(){
@Override
public void actionPerformed(ActionEvent e) {
count--;
if (count == 0) timer.stop();
label1.setText(String.valueOf(count));
}
});
timer.start();
jbt1.addActionListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent e) {
label2.setText("Yes");
}
});
jbt2.addActionListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent e) {
label2.setText("No");
}
});
}
}https://stackoverflow.com/questions/20354228
复制相似问题