📄 timer.java
字号:
package jcase.lianliankan;
import javax.swing.JProgressBar;
public class Timer extends JProgressBar implements Runnable {
private boolean clockthread=false; //设置一个线程运行标志
//int min=0;
private int sec=0;
private long startTime;
private StageListener listener;
public Timer(int max_seconds){
super(0,max_seconds);
this.setStringPainted(true);
}
public void start() //线程开始的类
{
if(!clockthread){
clockthread=true;
new Thread (this).start(); //开始新的线程
startTime=System.currentTimeMillis();
}
}
public void stop() //终止线程
{
clockthread=false; //设置标志位为false,终止线程
}
public void run()
{
while(clockthread)
{
this.setValue(sec);
this.setString(getTime());
try{
Thread.sleep(1000);//让线程沉睡1000毫秒,也就是一秒钟
} catch(InterruptedException e){
//do noting
}
sec++; //计时器自动增加
if(sec > this.getMaximum() && (listener != null)){
clockthread=false;
listener.timedOut();
}
}
}
/**
* 奖励玩家一些时间(即计时器减少奖励的秒数)
*/
protected void credit(int seconds){
if(sec-seconds>0){
sec-=seconds;
}else{
sec=0;
}
}
/**
* 得到游戏开始到现在逝去的准确时间,而不是本类的计时器所计算的时间。
* @return 逝去时间的字符串,格式mm:ss
*/
public String getTime()
{
StringBuffer ti=new StringBuffer(5);
int minute,second;
int seconds=(int)((System.currentTimeMillis()-startTime)/1000);
minute=seconds/60;
second=seconds%60;
if (minute<10)
ti.append("0");
ti.append(Integer.toString(minute));
ti.append(":");
if (second<10)
ti.append("0");
ti.append(Integer.toString(second));
return ti.toString();
}
/**
* @return Returns the listener.
*/
StageListener getListener() {
return listener;
}
/**
* @param listener The listener to set.
*/
void setListener(StageListener listener) {
this.listener = listener;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -