Java 我的秋千游戏倒计时解决方案。(卡片布局)
我正在制作一个摇摆迷宫游戏,我使用卡片布局在游戏中从一个面板转到另一个面板(主菜单-->选择难度屏幕-->游戏屏幕)。Java 我的秋千游戏倒计时解决方案。(卡片布局),java,swing,events,timer,layout-manager,Java,Swing,Events,Timer,Layout Manager,我正在制作一个摇摆迷宫游戏,我使用卡片布局在游戏中从一个面板转到另一个面板(主菜单-->选择难度屏幕-->游戏屏幕)。 我已经设置好了游戏和菜单,现在我正在尝试添加一个倒计时时钟,让用户知道在游戏结束前他还有X秒 我制作了一个倒计时程序,它适用于1个贴图(1个面板),但当我尝试将其用于其他面板(我的其他2个贴图)时,它非常适合。它真的变得很糟糕。计时器在达到0(选项窗格和嘟嘟声)后不会停止其操作。 因此,当我将TimerEvent和TimerClass类链接到我的GUI(我在这里发布的其他GUI
我已经设置好了游戏和菜单,现在我正在尝试添加一个倒计时时钟,让用户知道在游戏结束前他还有X秒
我制作了一个倒计时程序,它适用于1个贴图(1个面板),但当我尝试将其用于其他面板(我的其他2个贴图)时,它非常适合。它真的变得很糟糕。计时器在达到0(选项窗格和嘟嘟声)后不会停止其操作。 因此,当我将TimerEvent和TimerClass类链接到我的GUI(我在这里发布的其他GUI,但在这里发布的很多行)时,它们确实可以工作。但当我尝试在其他面板上添加更多计时器时(在我的游戏之间的不同关卡),它会变得很糟糕。 很抱歉我的英语不好,非常感谢你 真诚地说,一个初学者程序员 菜单类(非常简短和基本的版本,我为您做了测试): 我的timerEvent类(稍作更改,看起来适合上面的类) 我的TimerClass:
为什么不这样做:
int counter;
for (int j = 0 ; j >=counter ; j++) {
Card.timerLabel.setText("Time:" + counter);
delayer (1000);
}
private static void delayer (long milliseconds)
{
try {
Thread.sleep (1000);
}
catch (InterruptedException ex){
}
}
我在webz上读到,我必须小心使用线程,最好使用swing定时器:s,但我会试试你的,如果它有效……那么它就有效了。我会让你知道的
public class TimerEvent implements ActionListener {
static TimerEvent e = new TimerEvent();
public void actionPerformed(ActionEvent e){
int count = 60;
Card.timerLabel.setText("Time: " + count);
TimerClass tc = new TimerClass(count);
Card.timer = new Timer(1000, tc);
Card.timer.start();
}
}
public class TimerClass implements ActionListener {
int counter;
public TimerClass(int counter) {
this.counter = counter;
}
public void actionPerformed(ActionEvent tc) {
counter--;
if (counter >= 1) {
Card.timerLabel.setText("Time:" + counter);
} else {
Card.timer.stop();
Card.timerLabel.setText("Done");
Toolkit.getDefaultToolkit().beep();
JOptionPane.showMessageDialog(MainMenu.panelCont, "Time expired, game over");
Card.cl.show(MainMenu.panelCont, "2");
Card.timer.stop();
}
}
}
int counter;
for (int j = 0 ; j >=counter ; j++) {
Card.timerLabel.setText("Time:" + counter);
delayer (1000);
}
private static void delayer (long milliseconds)
{
try {
Thread.sleep (1000);
}
catch (InterruptedException ex){
}
}