📄 timer.java
字号:
cb2.DrawControl(gBuffer);
cb3.DrawControl(gBuffer);
}
//画时钟
void DrawClock()
{
if(soundRunner>0&&blink)
gBuffer.setColor(Color.red);
else
gBuffer.setColor(Color.white);
gBuffer.fillRoundRect(38,45,112,30,15,15);
gBuffer.setFont(font3);
if(soundRunner>0&&blink)
gBuffer.setColor(Color.white);
else
gBuffer.setColor(Color.black);
String s1, s2, s3;
if(hours<10)s1="0"; else s1="";
if(minutes<10)s2="0"; else s2="";
if(seconds<10)s3="0"; else s3="";
String output=s1+hours+":"+s2+minutes+":"+s3+seconds;
if(output.length()<=8)
gBuffer.drawString(output,45,69);
else
gBuffer.drawString("00:00:00",45,69);
}
public void update(Graphics g)
{
paint(g);
}
//paint()方法
public void paint(Graphics g)
{
g.drawImage (Buffer,0,0, this);
}
//鼠标是否移动
public boolean mouseMove(Event evt,int x,int y)
{
if(x>20&&x<170&&y>200&&y<220)
framed=true;
else
framed=false;
return true;
}
//鼠标是否按下
public boolean mouseDown(Event evt,int x,int y)
{
sb1.mouseDown(x, y);
sb2.mouseDown(x, y);
sb3.mouseDown(x, y);
cb1.mouseDown(x, y);
cb2.mouseDown(x, y);
cb3.mouseDown(x, y);
if(cb1.clicked)
{
ResetTimer();
cb1.checked=true; cb2.checked=false; countDown=true;
if(!enlarged)enlarged=true;
pressedReset=true;
}
else if(cb2.clicked)
{
ResetTimer();
cb2.checked=true; cb1.checked=false; countDown=false;
pressedReset=true;
}
if(cb3.clicked){cb3.checked^=true; playSound^=true;}
if(x>22&&x<68&&y>90&&y<110){pressedStart=true;StartTimer();}
if(x>72&&x<118&&y>90&&y<110){pressedStop=true;StopTimer();}
if(x>122&&x<168&&y>90&&y<110){pressedReset=true;ResetTimer();}
if(x>100&&x<120&&y>242&&y<262){enlarged^=true;pressedEnlarge=true;}
if(x>20&&x<170&&y>200&&y<220){input=true; message="";}
else input=false;
if(soundDelay)
{
alarmSound.stop();
soundRunner=0;
soundDelay=false;
}
repaint();
return true;
}
//鼠标键是否被抬起
public boolean mouseUp(Event evt,int x,int y)
{
pressedStart=pressedStop=pressedReset=pressedEnlarge=false;
sb1.mouseUp();
sb2.mouseUp();
sb3.mouseUp();
cb1.mouseUp();
cb2.mouseUp();
cb3.mouseUp();
repaint();
return true;
}
//开始计时
void StartTimer()
{
long h=sb1.GetNumber();
long m=sb2.GetNumber();
long s=sb3.GetNumber();
timeSet=(h*3600+m*60+s)*1000;
if(!running||paused)
{
if(!(timeSet==0&&countDown))
{
paused=false;
running=true;
startTime=System.currentTimeMillis();
}
}
}
//停止计时
void StopTimer()
{
if(running)
{
if(!paused)
{
if(!countDown)
pauseValue=diffTime;
else
pauseValue=(currTime-startTime)/1000+pauseValue;
}
paused=true;
}
}
//重新设置计时器
void ResetTimer()
{
running=false;
pauseValue=diffTime=0;
startTime=System.currentTimeMillis();
if(countDown)
{
long h=sb1.GetNumber();
long m=sb2.GetNumber();
long s=sb3.GetNumber();
timeSet=(h*3600+m*60+s)*1000;
hours=(int)h;
minutes=(int)m;
seconds=(int)s;
}
else
hours=minutes=seconds=0;
}
//计算时间
void CalculateTime()
{
currTime=System.currentTimeMillis();
if(!countDown)
diffTime=(currTime-startTime)/1000+pauseValue;
else
diffTime=((timeSet-(currTime-startTime))/1000)-pauseValue;
hours=(int)(diffTime-diffTime % 3600)/3600;
minutes=(int)((diffTime-diffTime%60)/60) % 60;
seconds=(int)diffTime % 60;
}
//画三角形
void DrawTriangle(int x, int y, int w, int h)
{
int a[] = {x,(x+w/2),x+w};
int b[] = {y-h,y,y-h};
gBuffer.fillPolygon(a, b, 3);
}
//画中心圆圈
void DrawCenteredArc(int cx, int cy, int r, int beginArc, int arc)
{
int x=cx-r;
int y=cy-r;
gBuffer.drawArc(x-87,y-87,r*2,r*2,beginArc,arc);
}
//画圈
void DrawCircle()
{
gBuffer.setColor(Color.red);
gBuffer.drawOval(7,12,174,174);
gBuffer.setColor(new Color(0,210,120));
int arc;
int beginArc;
int unit=minutes;
if(countDown)
{
beginArc=unit*6+90;
arc=-unit*6;
if(hours>0)arc=360;
else
SetAngle(360-unit*6);
}
else
{
beginArc=90;
arc=-unit*6;
SetAngle(unit*6);
}
for(int i=0;i<3;i++)
{
DrawCenteredArc(182, 186, 86+i, beginArc, arc);
}
int centerX=94;
int centerY=99;
int radius=87;
ox=centerX;
oy=centerY;
int x[]= new int[3];
int y[]= new int[3];
x[0]=-7;
x[1]=7;
x[2]=-7;
y[0]=-radius-7;
y[1]=-radius;
y[2]=-radius+7;
RotatePolygon(x, y, 3);
}
int rotate_x(int x, int y)
{
return ((int) (ox + x * cos - y * sin));
}
int rotate_y(int x, int y)
{
return ((int) (oy + y * cos + x * sin));
}
//设置角度
void SetAngle(double a)
{
radians = (a * 2 * Math.PI) / 360;
cos = Math.cos(radians);
sin = Math.sin(radians);
}
//旋转多边形
void RotatePolygon(int x[], int y[], int n)
{
int new_x[] = new int [3];
int new_y[] = new int [3];
for(int i=0; i<n; i++)
{
new_x[i]=rotate_x(x[i], y[i]);
new_y[i]=rotate_y(x[i], y[i]);
}
gBuffer.fillPolygon(new_x, new_y, n);
}
//判断键盘是否被按下
public boolean keyDown(Event e, int key)
{
if(key==10) input=false;
else if(input)
message=message+(char)key;
return true;
}
//画文字编辑区域
void DrawTextArea()
{
if(soundRunner>0&&blink)
gBuffer.setColor(Color.red);
else
gBuffer.setColor(Color.white);
gBuffer.fillRect(20, 200, 150, 20);
gBuffer.setColor(Color.orange);
if(framed)
gBuffer.drawRect(18, 198, 153, 23);
if(soundRunner>0&&blink)
gBuffer.setColor(Color.white);
else
gBuffer.setColor(Color.black);
gBuffer.setFont(font5);
FontMetrics fm = gBuffer.getFontMetrics(font5);
int stringWidth=fm.stringWidth(message);
if(input&&blink)
gBuffer.drawString(message+"|",25,215);
else if(input&&!blink)
gBuffer.drawString(message,25,215);
else
gBuffer.drawString(message,95-stringWidth/2,215);
}
//画凹槽
void DrawGauge()
{
gBuffer.setColor(Color.green);
gBuffer.fillRect(20, 222, 150, 10);
int barL;
float frac;
if(diffTime>0&&timeSet>0)
{
frac=(float)((timeSet-diffTime*1000)/(float)timeSet);
barL=(int)(frac*150);
}
else barL=0;
if(paused)
gBuffer.setColor(Color.blue);
else
gBuffer.setColor(Color.red);
if(countDown)
{
gBuffer.fillRect(20, 222, barL, 10);
}
else if(running)
{
for(int i=-5;i<150;i+=6)
gBuffer.fillRect(20+runner+i, 222, 3, 10);
gBuffer.setColor(color1);
gBuffer.fillRect(15,222,5,10);
gBuffer.fillRect(170,222,5,10);
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -