线程的简单程序 (秒表器) 给一个界面 上面一个文本框 下面两个按钮一 个是(开始)另一个是(继续/暂停) 点开始时开始计时,点第二个按钮就暂停再点第二个按钮就又开始. 谢谢各位高手! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 import java.awt.FlowLayout;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.text.SimpleDateFormat;import java.util.Calendar;import javax.swing.JButton;import javax.swing.JFrame;import javax.swing.JPanel;import javax.swing.JTextField;import javax.swing.Timer;public class Test { private JTextField jt; private Timer time; public Test() { JFrame jf = new JFrame(); jf.setSize(200, 200); jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); JPanel jp = new JPanel(); jp.setLayout(new FlowLayout()); jt = new JTextField(); jt.setText("点击按钮开始显示时间"); JButton jb1 = new JButton("开始"); jb1.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent arg0) { time = new Timer(1000, new ActionListener() { public void actionPerformed(ActionEvent e) { Calendar c = Calendar.getInstance(); SimpleDateFormat sd = new SimpleDateFormat( "yyyy-MM-dd HH:ss"); String nowTime = sd.format(c.getTime()); jt.setText(nowTime); } }); time.start(); } }); JButton jb2 = new JButton("结束"); jb2.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent arg0) { time.stop(); } }); jp.add(jt); jp.add(jb1); jp.add(jb2); jf.add(jp); jf.setVisible(true); } public static void main(String[] args) { new Test(); }} 楼主的意思是可以resume的,可惜suspend不好用,呵呵 import javax.swing.*;import java.awt.event.*;import java.awt.*;class TimerFrame extends JFrame { private JLabel showTime=new JLabel(); private int hour; private int min; private int sec; private int msec; private Timer timer; public TimerFrame(){ timer=new Timer(100,new UpdateTimeAction()); JButton startBut=new JButton("Start"); startBut.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e){ timer.start(); } }); JButton pauseBut=new JButton("Start/Pause"); pauseBut.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e){ if(timer.isRunning()) timer.stop(); else timer.start(); } }); JButton clearBut=new JButton("Clear"); clearBut.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e){ hour=0; min=0; sec=0; msec=0; showTime.setText(hour+":"+min+":"+sec+"."+msec); } }); showTime.setHorizontalAlignment(SwingConstants.CENTER); add(showTime,BorderLayout.CENTER); JPanel panel=new JPanel(); panel.add(startBut); panel.add(pauseBut); panel.add(clearBut); add(panel,BorderLayout.SOUTH); setSize(300,200); setVisible(true); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } private class UpdateTimeAction implements ActionListener{ public void actionPerformed(ActionEvent e){ addMsec(); showTime.setText(hour+":"+min+":"+sec+"."+msec); } } private void addMsec(){ msec++; if(msec==10){ msec=0; sec++; if(msec==60){ msec=0; min++; if(min==60){ min=0; hour++; } } } } public static void main(String[] args) { new TimerFrame(); }} <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><HTML><HEAD><TITLE>计时器</TITLE><META NAME="Generator" CONTENT="EditPlus"><META NAME="Author" CONTENT=""><META NAME="Keywords" CONTENT=""><META NAME="Description" CONTENT=""></HEAD><BODY bgcolor='#FF9966'><br/><br/><br/><br/><br/><br/><br/><br/><br/><div align='center'><font size='5' face='黑体'>*天王表为您计时*</font><br/><br/><input name='aa' value='单击按钮开始计时'><br/><br/><input name='bb' type='button' value='count' onclick='check()'><input name='cc' value='clear' onclick='check1()' type='button'></div><script>var timeout=0function check(){ if(timeout==0) { bb.value='pause'; window.status='若要暂停,请单击pause'; count1(); } else { //alert(timeout); bb.value='count'; window.status='若要开始计时,请单击count'; clearTimeout(timeout)/*清空计数器的作用,是停止计数器所代表的函数的动作.而不是清空计数器里的值.*/ //alert(timeout); timeout=0; //alert(timeout); } } var hh=0; var mm=0; var ss=0;function count1(){ ss++; if(ss>59) { ss=0; mm++; } if(mm>59) { mm=0; hh++ } aa.value=eval("hh+'小时'+mm+'分'+ss+'秒'") //或者可以写成aa.value=hh+'小时'+mm+'分'+ss+'秒' timeout=setTimeout('count1()',1000) } function check1() { clearTimeout(timeout); timeout=0,ss=0,mm=0,hh=0; aa.value=eval("hh+'小时'+mm+'分'+ss+'秒'") }</script></BODY></HTML> 是啊,手误吧sec写成msec了重新改过的代码。import javax.swing.*;import java.awt.event.*;import java.awt.*;class TimerFrame extends JFrame { private JLabel showTime=new JLabel(); private int hour; private int min; private int sec; private int msec; private Timer timer; public TimerFrame(){ timer=new Timer(100,new UpdateTimeAction()); JButton startBut=new JButton("Start"); startBut.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e){ timer.start(); } }); JButton pauseBut=new JButton("Start/Pause"); pauseBut.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e){ if(timer.isRunning()) timer.stop(); else timer.start(); } }); JButton clearBut=new JButton("Clear"); clearBut.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e){ hour=0; min=0; sec=0; msec=0; showTime.setText(hour+":"+min+":"+sec+"."+msec); timer.stop(); } }); showTime.setHorizontalAlignment(SwingConstants.CENTER); add(showTime,BorderLayout.CENTER); JPanel panel=new JPanel(); panel.add(startBut); panel.add(pauseBut); panel.add(clearBut); add(panel,BorderLayout.SOUTH); setSize(300,200); setVisible(true); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } private class UpdateTimeAction implements ActionListener{ public void actionPerformed(ActionEvent e){ addMsec(); showTime.setText(hour+":"+min+":"+sec+"."+msec); } } private void addMsec(){ msec++; if(msec==10){ msec=0; sec++; if(sec==60){ sec=0; min++; if(min==60){ min=0; hour++; } } } } public static void main(String[] args) { new TimerFrame(); }} 关于System类的问题 一段C代码转成JAVA,难住了很多高手,求解啊! 求一个两数组里的元素是否相同的比较算法,在线等达人,谢谢啦~~ 请问javax.swing.CellRenderPane主要是做甚末用的 如何将一个java程序作成服务程序,具体见帖子内容 [转帖]今晚名师主讲:免费网络视频公开课《轻轻松松踏入Java殿堂》 java强制垃圾回收遇到的问题 请教tomcat 4.0的配置问题 kele8的桌球游戏、打雪仗游戏是用JAVA写的吗? 数据迁移问题,求大家给建议 怎么在myEclipse中实现与数据库的连接? 该怎么入门JAVA的圣经
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.Timer;
public class Test {
private JTextField jt;
private Timer time;
public Test() {
JFrame jf = new JFrame();
jf.setSize(200, 200);
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPanel jp = new JPanel();
jp.setLayout(new FlowLayout());
jt = new JTextField();
jt.setText("点击按钮开始显示时间");
JButton jb1 = new JButton("开始");
jb1.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
time = new Timer(1000, new ActionListener() {
public void actionPerformed(ActionEvent e) {
Calendar c = Calendar.getInstance();
SimpleDateFormat sd = new SimpleDateFormat(
"yyyy-MM-dd HH:ss");
String nowTime = sd.format(c.getTime());
jt.setText(nowTime);
}
});
time.start();
}
});
JButton jb2 = new JButton("结束");
jb2.addActionListener(new ActionListener() { @Override
public void actionPerformed(ActionEvent arg0) {
time.stop();
} });
jp.add(jt);
jp.add(jb1);
jp.add(jb2);
jf.add(jp);
jf.setVisible(true);
}
public static void main(String[] args) {
new Test();
}}
import javax.swing.*;
import java.awt.event.*;
import java.awt.*;class TimerFrame extends JFrame
{
private JLabel showTime=new JLabel();
private int hour;
private int min;
private int sec;
private int msec;
private Timer timer;
public TimerFrame(){
timer=new Timer(100,new UpdateTimeAction());
JButton startBut=new JButton("Start");
startBut.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
timer.start();
}
}); JButton pauseBut=new JButton("Start/Pause");
pauseBut.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
if(timer.isRunning())
timer.stop();
else
timer.start();
}
});
JButton clearBut=new JButton("Clear");
clearBut.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
hour=0;
min=0;
sec=0;
msec=0;
showTime.setText(hour+":"+min+":"+sec+"."+msec);
}
}); showTime.setHorizontalAlignment(SwingConstants.CENTER);
add(showTime,BorderLayout.CENTER);
JPanel panel=new JPanel();
panel.add(startBut);
panel.add(pauseBut);
panel.add(clearBut);
add(panel,BorderLayout.SOUTH);
setSize(300,200);
setVisible(true);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
} private class UpdateTimeAction implements ActionListener{
public void actionPerformed(ActionEvent e){
addMsec();
showTime.setText(hour+":"+min+":"+sec+"."+msec);
}
}
private void addMsec(){
msec++;
if(msec==10){
msec=0;
sec++;
if(msec==60){
msec=0;
min++;
if(min==60){
min=0;
hour++;
}
}
}
}
public static void main(String[] args)
{
new TimerFrame();
}}
<HTML>
<HEAD>
<TITLE>计时器</TITLE>
<META NAME="Generator" CONTENT="EditPlus">
<META NAME="Author" CONTENT="">
<META NAME="Keywords" CONTENT="">
<META NAME="Description" CONTENT="">
</HEAD><BODY bgcolor='#FF9966'>
<br/><br/><br/><br/><br/><br/><br/><br/><br/>
<div align='center'><font size='5' face='黑体'>*天王表为您计时*</font><br/><br/><input name='aa' value='单击按钮开始计时'><br/><br/><input name='bb' type='button' value='count' onclick='check()'><input name='cc' value='clear' onclick='check1()' type='button'></div>
<script>
var timeout=0
function check()
{
if(timeout==0)
{
bb.value='pause';
window.status='若要暂停,请单击pause';
count1();
}
else
{ //alert(timeout);
bb.value='count';
window.status='若要开始计时,请单击count';
clearTimeout(timeout)/*清空计数器的作用,是停止计数器所代表的函数的动作.而不是清空计数器里的值.*/
//alert(timeout);
timeout=0;
//alert(timeout);
}
}
var hh=0;
var mm=0;
var ss=0;
function count1()
{ ss++;
if(ss>59)
{
ss=0;
mm++;
}
if(mm>59)
{
mm=0;
hh++
}
aa.value=eval("hh+'小时'+mm+'分'+ss+'秒'")
//或者可以写成aa.value=hh+'小时'+mm+'分'+ss+'秒'
timeout=setTimeout('count1()',1000)
} function check1()
{
clearTimeout(timeout);
timeout=0,ss=0,mm=0,hh=0;
aa.value=eval("hh+'小时'+mm+'分'+ss+'秒'")
}
</script></BODY>
</HTML>
重新改过的代码。import javax.swing.*;
import java.awt.event.*;
import java.awt.*;class TimerFrame extends JFrame
{
private JLabel showTime=new JLabel();
private int hour;
private int min;
private int sec;
private int msec;
private Timer timer;
public TimerFrame(){
timer=new Timer(100,new UpdateTimeAction());
JButton startBut=new JButton("Start");
startBut.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
timer.start();
}
}); JButton pauseBut=new JButton("Start/Pause");
pauseBut.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
if(timer.isRunning())
timer.stop();
else
timer.start();
}
});
JButton clearBut=new JButton("Clear");
clearBut.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
hour=0;
min=0;
sec=0;
msec=0;
showTime.setText(hour+":"+min+":"+sec+"."+msec);
timer.stop();
}
}); showTime.setHorizontalAlignment(SwingConstants.CENTER);
add(showTime,BorderLayout.CENTER);
JPanel panel=new JPanel();
panel.add(startBut);
panel.add(pauseBut);
panel.add(clearBut);
add(panel,BorderLayout.SOUTH);
setSize(300,200);
setVisible(true);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
} private class UpdateTimeAction implements ActionListener{
public void actionPerformed(ActionEvent e){
addMsec();
showTime.setText(hour+":"+min+":"+sec+"."+msec);
}
}
private void addMsec(){
msec++;
if(msec==10){
msec=0;
sec++;
if(sec==60){
sec=0;
min++;
if(min==60){
min=0;
hour++;
}
}
}
}
public static void main(String[] args)
{
new TimerFrame();
}}