计数器java代码_计数器的java代码

展开全部

看书觉得很容易,真正写代码才发现真不容易,累死。

我也是JAVA初学者(学了不到半年)32313133353236313431303231363533e58685e5aeb931333234333265,代码肯定有不合适的地方,凑合看吧,反正功能是完成了,代码如下:

import java.awt.*;

import java.awt.event.*;

import javax.swing.*;

public class TestClock extends JFrame{

/** Creates a new instance of TestClock */

public TestClock() {

JPanel jp=new JPanel();

final JLabel jl=new JLabel("0");

jp.add(jl);

add(jp,BorderLayout.CENTER);

JButton jbStart=new JButton("开始");

jbStart.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent e) {

JButton j =(JButton)e.getSource();

j.setEnabled(false);

dt=new DamThread(new ClockThread(jl));

dt.start();

}

});

JButton jbPause=new JButton("暂停");

jbPause.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent e) {

JButton j=(JButton)e.getSource();

String s=(String)e.getActionCommand();

if(s.equals("暂停")){

dt.setStatus(ClockStatus.PAUSE);

j.setText("继续");

}else{

dt.setStatus(ClockStatus.CONTINUE);

j.setText("暂停");

}

}

});

JButton jbZero=new JButton("清零");

jbZero.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent e) {

dt.setStatus(ClockStatus.ZERO);

}

});

JButton jbStop=new JButton("停止");

jbStop.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent e) {

dt.setStatus(ClockStatus.STOP);

}

});

JPanel jp1=new JPanel();

jp1.add(jbStart);

jp1.add(jbPause);

jp1.add(jbZero);

jp1.add(jbStop);

add(jp1,BorderLayout.SOUTH);

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

pack();

setLocationRelativeTo(null);

}

public static void main(String[] args) {

TestClock tc=new TestClock();

tc.setVisible(true);

}

DamThread dt;

}

class DamThread extends Thread{

public DamThread(ClockThread c){

this.ct=c;

ct.start();

this.setDaemon(true);

this.STATUS=ClockStatus.START;

}

public void run(){

while(ct.isAlive()){

CheckStatus();

}

}

private void CheckStatus(){

switch(getStatus()){

case PAUSE:

ct.mysuspend();

break;

case ZERO:

ct.seti(0);

ct.label.setText("0");

setStatus(ClockStatus.START);

break;

case STOP:

ct.seti(1001);

break;

case CONTINUE:

ct.myresume();

break;

default:

break;

}

}

public void setStatus(ClockStatus cs){

this.STATUS=cs;

}

public ClockStatus getStatus(){

return STATUS;

}

ClockStatus STATUS;

ClockThread ct;

}

class ClockThread extends Thread{

public ClockThread(JLabel j){

this.label=j;

suspendFlag=false;

}

public void run(){

while(i<=1000){

try {

i++;

label.setText(""+i);

synchronized(this){

while(suspendFlag){

wait();

}

}

sleep(100);

} catch (InterruptedException ex) {

ex.printStackTrace();

}

}

}

public void seti(int in){

this.i=in;

}

public void mysuspend()

{

suspendFlag=true;

}

synchronized void myresume()

{

suspendFlag=false;

notify();

}

private boolean suspendFlag;

private int i=0;

JLabel label;

}

enum ClockStatus{

START,PAUSE,ZERO,STOP,CONTINUE

}

本回答由提问者推荐

2Q==

已赞过

已踩过<

你对这个回答的评价是?

评论

收起

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值