| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 676 人关注过本帖
标题:求大神们帮忙看一下这个倒计时代码
取消只看楼主 加入收藏
笔墨痕干
Rank: 1
等 级:新手上路
威 望:1
帖 子:56
专家分:0
注 册:2014-3-24
结帖率:84.21%
收藏
已结贴  问题点数:10 回复次数:3 
求大神们帮忙看一下这个倒计时代码
程序代码:
package 计时器1;

import java.awt.BorderLayout;
import java.awt.Button;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextField;
class Show extends JFrame//倒计时面板。
{
    Button but1,but2,but3;
    JTextField jt;
    JPanel jp1,jp2;
    public void inint()//面板的初始化
    {
        but1=new Button("开始");
        but2=new Button("暂停");
        but3=new Button("继续");
        jt=new JTextField("00:00:00",10);
        jp1=new JPanel();
        jp2=new JPanel();
        jp1.add(jt);
        jp2.add(but1);
        jp2.add(but2);
        jp2.add(but3);
        this.setTitle("倒计时");
        this.setLayout(new BorderLayout());
        this.add("North",jp1);
        this.add("Center",jp2);
        this.setVisible(true);
        this.setBounds(200, 200, 200, 200);
        but1.addActionListener(new ActionListener()
        {
            //接口,计算总秒数。并且开启线程
            @Override
            public void actionPerformed(ActionEvent e)
            {
                int second=0;
                String[] s=null;
                if(jt.getText().equals("00:00:00"))
                    javax.swing.JOptionPane.showMessageDialog(null, "请输入计时的总时间");
                else
                {
                    s=jt.getText().split(":");//把字符串按照字符":"拆分,反回的值是字符串数组。
                    int[] count=new int[3];
                    for(int i=0;i<3;i++)
                        count[i]=Integer.parseInt(s[i]);//把字符串转化为整形。
                    second=second+count[0]*(int)Math.pow(60, 2)+count[1]*(int)Math.pow(60, 1)+count[2];//计算总秒数
                    Show sh=new Show();
                    Mythread my=new Mythread(second,sh);
                    Thread t=new Thread(my);
                    t.start();
                }
               
            }
           
        });
//        but2.addActionListener();
       
    }
   
}
class Mythread implements Runnable//线程
{
    Show sh;
    boolean flage=true;
    private int s=0;
    private int second=0;
    public Mythread(int s,Show sh)
    {
        this.s=s;
        this.sh=sh;
    }
    public void set(boolean flage)
    {
        this.flage=flage;
    }
    public void run()
    {
        try
        {
            while(flage==true)
                {
                    if(s>=0)
                    {
                        display(this.s);
                        Thread.sleep(1000);
                        this.s--;
                    }
                    else
                        break;
                }
               
        } catch (InterruptedException e) {}                   
           
    }
    public void display(int second)//显示倒计时
    {
        int h=0,m=0;
        while(second>=60)
        {
            m=m+(second/60);
            second=second%60;

        }
        while(m>=60)
        {
            h=h+(m/60);
            m=m%60;
        }
        sh.jt.setText(h+":"+m+":"+second);
}
}
public class JiShi2
{
    public static void main(String[] args)
    {
       
        new Show().inint();

    }

}
图片附件: 游客没有浏览图片的权限,请 登录注册
请问怎么回事啊!!!

[ 本帖最后由 笔墨痕干 于 2014-11-24 14:22 编辑 ]
搜索更多相关主题的帖子: 计时器 
2014-11-24 14:21
笔墨痕干
Rank: 1
等 级:新手上路
威 望:1
帖 子:56
专家分:0
注 册:2014-3-24
收藏
得分:0 
回复 2 楼 编号 1016
谢谢您了,真的很感谢!!!!!谢谢。我以后就打扰你了。。。。
2014-11-25 13:53
笔墨痕干
Rank: 1
等 级:新手上路
威 望:1
帖 子:56
专家分:0
注 册:2014-3-24
收藏
得分:0 
回复 3 楼 笔墨痕干
程序代码:
package 计时器1;

import java.awt.BorderLayout;
import java.awt.Button;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import import import import import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextField;
class Show extends JFrame//倒计时面板。
{
    private static final String LINE_SEPARATOR = System.getProperty("line.separator");
    Mythread my=new Mythread();
    Button but1,but2,but3;
    JTextField jt;
    JPanel jp1,jp2;
    public void inint()//面板的初始化
    {
        but1=new Button("开始");
        but2=new Button("暂停");
        but3=new Button("继续");
        jt=new JTextField("00:00:00",10);
        jp1=new JPanel();
        jp2=new JPanel();
        jp1.add(jt);
        jp2.add(but1);
        jp2.add(but2);
        jp2.add(but3);
        this.setTitle("倒计时");
        this.setLayout(new BorderLayout());
        this.add("North",jp1);
        this.add("Center",jp2);
        this.setVisible(true);
        this.setBounds(200, 200, 200, 200);
        but1.addActionListener(new ActionListener()
        {
            //接口,计算总秒数。并且开启线程
            @Override
            public void actionPerformed(ActionEvent e)
            {
                int second=0;
                String[] s=null;
                if(jt.getText().equals("00:00:00"))
                    javax.swing.JOptionPane.showMessageDialog(null, "请输入计时的总时间");
                else
                {
                    s=jt.getText().split(":");//把字符串按照字符":"拆分,反回的值是字符串数组。
                    int[] count=new int[3];
                    for(int i=0;i<3;i++)
                        count[i]=Integer.parseInt(s[i]);//把字符串转化为整形。
                    second=second+count[0]*(int)Math.pow(60, 2)+count[1]*(int)Math.pow(60, 1)+count[2];//计算总秒数
                    my.My(second,jt);
                    Thread t=new Thread(my);
                    t.start();
                }   
            }
        });
       but2.addActionListener(new ActionListener()
       {
        public void actionPerformed(ActionEvent e)
        {
            if(jt.getText().equals("00:00:00"))
                javax.swing.JOptionPane.showMessageDialog(null, "请输入计时的总时间");
            else   
                {
                    my.set(false);   
                    System.out.println(jt.getText());
                    FileWriter fw=null;
                    try
                    {
                            fw=new FileWriter("记事本.txt",true);
                            fw.write(jt.getText()+LINE_SEPARATOR);
                    }
                    catch (IOException e1)
                    {}
                    finally
                    {
                        try {
                            fw.close();
                        } catch (IOException e1) {
                            System.out.println("文件关闭失败");
                        }
                    }
                   
                }
        }          
       });
      
       but3.addActionListener(new ActionListener(){
        @Override
        public void actionPerformed(ActionEvent e) {
            if(jt.getText().equals("00:00:00"))
                javax.swing.JOptionPane.showMessageDialog(null, "请输入计时的总时间");
            else   
            {
                my.set(true);
            }
        }  
       });
    }
}
class Mythread implements Runnable//线程
{
    JTextField jt;
    private boolean flage=true;
    private int s=0;
    private int second=0;
    public void My(int s,JTextField jt)
    {
        this.s=s;
        this.jt=jt;
    }
    public void set(boolean flage)
    {
        this.flage=flage;
    }
    public void run()
    {   
        while(flage==true)
        {
            try
            {
                    if(s>0)
                    {
                        Thread.sleep(1000);
                        this.s--;
                        display(this.s);
                    }
                    else
                        break;
            } catch (InterruptedException e) {}   
        }   
    }
    public void display(int second)//显示倒计时
    {
        int h=0,m=0;
        while(second>=60)
        {
            m=m+(second/60);
            second=second%60;
        }
        while(m>=60)
        {
            h=h+(m/60);
            m=m%60;
        }
        jt.setText(h+":"+m+":"+second);
        System.out.println(jt.getText());
        System.out.println(second);
}
}
public class JiShi2
{
    public static void main(String[] args)
    {
        new Show().inint();
    }

}
代码还是有问题,在暂停的地方不能立即实行,还有继续的地方线程不运行,再帮我看下吧,谢谢!!
2014-11-26 10:11
笔墨痕干
Rank: 1
等 级:新手上路
威 望:1
帖 子:56
专家分:0
注 册:2014-3-24
收藏
得分:0 
回复 6 楼 编号 1016
谢谢你的帮助,你说的suspend()方法和t.resume()方法都已经过时了不能用了,但是我用了interrupt()代替它suspend()方法,暂停功能实现了。继续功能我用的是interrupted()方法但是没有实现。
2014-11-26 20:40
快速回复:求大神们帮忙看一下这个倒计时代码
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.020936 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved