我想在JFrame中添加一个动态显示时间的组件,请问怎么实现.
------解决方案--------------------
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.util.*;
import java.text.SimpleDateFormat;
public class Test
{
private JFrame f;
private ShowTime show;
private JButton btn;
public Test()
{
f = new JFrame();
Container c = f.getContentPane();
show = new ShowTime();
c.add(show, "Center ");
new Thread(show).start();
f.setSize(400,400);
f.setVisible(true);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public static void main(String args[])
{
new Test();
}
}
class ShowTime extends JPanel implements Runnable,ActionListener
{
boolean stop = true;
JLabel out = null;
private Date times = null;
private SimpleDateFormat matter = null;
JButton btn,btr;
public ShowTime()
{
out = new JLabel();
times = new Date();
btr = new JButton( "开始 ");
btn = new JButton( "停止 ");
add(out);
add(btn);
add(btr);
btn.addActionListener(this);
btr.addActionListener(this);
matter = new SimpleDateFormat( "HH时:mm分:ss秒 ");
out.setText( "现在时间: " +matter.format(times));
}
public void run()
{
while(true)
{
while(stop)
{
times = new Date();
out.setText( "现在时间: " +matter.format(times));
try{Thread.sleep(1000);}catch(Exception e){}
}
}
}
public void setStop(boolean b)
{
this.stop = b;
}
public void actionPerformed(ActionEvent ae)
{
if(ae.getSource() == btn)
setStop(false);
if(ae.getSource() == btr)
setStop(true);
}
}
乱写了一个,也实现你的要求了,哈哈