终于能发表博客了!记录一下自己的学习历程,或许以后再来看这些代码是幼稚的,但却见证了我的成长!
好吧!转入正题,这一周主要复习了多线程,其他的像awt,集合只是简略地看了看,主要是一开始多线程就没理解透彻。
下面是用线程模拟一个计时器并显示在Frame中的代码:
import java.awt.*;
import java.awt.event.*;
import javax.swing.Timer;
import java.util.*;
public class TimeRecorder
{
public static void main(String[] args)
{
new RecordTimer("简单的计时器");
}
}
class RecordTimer extends Frame
{
Timer time=new Timer(1000,new Recorder());
Button b1=new Button("开始计时");
Button b2=new Button("暂停计时");
Button b3=new Button("继续计时");
TextField text=new TextField(30);
Label l=new Label("计时器");
RecordTimer(String s)
{
add(b1);
add(b2);
add(b3);
add(l);
add(text);
setLayout(new FlowLayout());
b1.addActionListener(new Start());
b2.addActionListener(new Suspend());
b3.addActionListener(new Continue());
setBounds(100,100,300,100);
setBackground(Color.pink);
setVisible(true);
setResizable(false);
addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
System.exit(0);
}
});
}
class Recorder implements ActionListener//可以把以下四个类合并为一个方法写在RecordTimer中,此处这样写是为了练习类之间的相互联系。
{
public void actionPerformed(ActionEvent e)
{
Date date=new Date();
String str=date.toString();
text.setText(str);
}
}
class Start implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
time.start();
}
}
class Suspend implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
time.stop();
}
}
class Continue implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
time.restart();
}
}
}
效果图:
不足之处:本来想实现的功能是让计时器从零开始计时,暂停一段时间后,继续上次的计时。很显然现在这个计时器有点像时钟了,即使暂停一段时间了,可计时器并没有停下来,依旧在工作,只是在暂停期间TextField中不计时了而已。好吧,仍需改进啊!