问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

利用所学的JAVA语言知识,完成一个实现秒表功能的程序,利用...1

发布网友 发布时间:2023-09-28 14:37

我来回答

2个回答

热心网友 时间:2024-08-28 04:45

/** 
 * 小小的计时器 
 */  
public class TimerFrame extends JFrame {  
   
    private static final String INITIAL_LABEL_TEXT = "00:00:00 000";  
   
    // 计数线程  
    private CountingThread thread = new CountingThread();  
   
    // 记录程序开始时间  
    private long programStart = System.currentTimeMillis();  
   
    // 程序一开始就是暂停的  
    private long pauseStart = programStart;  
   
    // 程序暂停的总时间  
    private long pauseCount = 0;  
   
    private JLabel label = new JLabel(INITIAL_LABEL_TEXT);  
   
    private JButton startPauseButton = new JButton("开始");  
   
    private JButton resetButton = new JButton("清零");  
   
    private ActionListener startPauseButtonListener = new ActionListener() {  
        public void actionPerformed(ActionEvent e) {  
            if (thread.stopped) {  
                pauseCount += (System.currentTimeMillis() - pauseStart);  
                thread.stopped = false;  
                startPauseButton.setText("暂停");  
            } else {  
                pauseStart = System.currentTimeMillis();  
                thread.stopped = true;  
                startPauseButton.setText("继续");  
            }  
        }  
    };  
   
    private ActionListener resetButtonListener = new ActionListener() {  
        public void actionPerformed(ActionEvent e) {  
            pauseStart = programStart;  
            pauseCount = 0;  
            thread.stopped = true;  
            label.setText(INITIAL_LABEL_TEXT);  
            startPauseButton.setText("开始");  
        }  
    };  
   
    public TimerFrame(String title) throws HeadlessException {  
        super(title);  
        setDefaultCloseOperation(EXIT_ON_CLOSE);  
        setLocation(200, 200);  
        setResizable(false);  
   
        setupBorder();  
        setupLabel();  
        setupButtonsPanel();  
   
        startPauseButton.addActionListener(startPauseButtonListener);  
        resetButton.addActionListener(resetButtonListener);  
   
        thread.start(); // 计数线程一直就运行着  
    }  
   
    // 为窗体面板添加边框  
    private void setupBorder() {  
        JPanel contentPane = new JPanel(new BorderLayout());  
        contentPane.setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5));  
        this.setContentPane(contentPane);  
    }  
   
    // 配置按钮  
    private void setupButtonsPanel() {  
        JPanel panel = new JPanel(new FlowLayout());  
        panel.add(startPauseButton);  
        panel.add(resetButton);  
        add(panel, BorderLayout.SOUTH);  
    }  
   
    // 配置标签  
    private void setupLabel() {  
        label.setHorizontalAlignment(SwingConstants.CENTER);  
        label.setFont(new Font(label.getFont().getName(), label.getFont().getStyle(), 40));  
        this.add(label, BorderLayout.CENTER);  
    }  
   
    // 程序入口  
    public static void main(String[] args) {  
        try {  
            UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());  
        } catch (Exception e) {  
            e.printStackTrace();  
        }  
   
        TimerFrame frame = new TimerFrame("小小计时器");  
        frame.pack();  
        frame.setVisible(true);  
    }  
   
    private class CountingThread extends Thread {  
   
        public boolean stopped = true;  
   
        private CountingThread() {  
            setDaemon(true);  
        }  
   
        @Override  
        public void run() {  
            while (true) {  
                if (!stopped) {  
                    long elapsed = System.currentTimeMillis() - programStart - pauseCount;  
                    label.setText(format(elapsed));  
                }  
   
                try {  
                    sleep(17);  // 使时钟显得更乱  
                } catch (InterruptedException e) {  
                    e.printStackTrace();  
                    System.exit(1);  
                }  
            }  
        }  
   
        // 将毫秒数格式化  
        private String format(long elapsed) {  
            int hour, minute, second, milli;  
   
            milli = (int) (elapsed % 1000);  
            elapsed = elapsed / 1000;  
   
            second = (int) (elapsed % 60);  
            elapsed = elapsed / 60;  
   
            minute = (int) (elapsed % 60);  
            elapsed = elapsed / 60;  
   
            hour = (int) (elapsed % 60);  
   
            return String.format("%02d:%02d:%02d %03d", hour, minute, second, milli);  
        }  
    }  
}

参考:http://blog.csdn.net/yidinghe/article/details/6468407

热心网友 时间:2024-08-28 04:50

好的,着个我了解,通常的想法,我比较分析
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
联想E盘不见了怎么办? 电脑e盘不见了怎么恢复?6个步骤找回e盘 五一去河源万绿湖游玩,需要携带哪些物品? 五一假期,旅行必带的物品是什么 建行办新卡用了新手机号,旧卡就自动绑了信号 请问电磁炉热敏电阻阻值是多少 电磁炉换电阻多少钱 电磁炉配件电阻多少钱 电磁炉510K大电阻多少钱一个 更换电磁炉电阻多少钱 天猫苹果手机无需合约版是什么意思 分别把4快糖果,2块糖果,1块糖果和1袋糖果分给4个小朋友,... 把6颗糖分给甲乙丙丁四个小朋友,使每个小朋友都能分到糖果,一... 幼儿园老师有24颗糖果平均分给四个小朋友每个小朋友分得这堆糖...5 有一些糖果,平均分给几个小朋友每个小朋友总是分了5颗,最后还... c语言中的m/=n 是什么意思 m++==nC语言中是什么意思啊?++m==n呢35 C语言中“i=(m>n?n:m)”是什么意思22 我收到建行的短信,是95533发的,说什么正在开通网银服务。这是诈骗短信... 冒险王2官方下载链接在哪里可以找到?1 鑫厨洁油烟机怎么样 数字会议系统组成特点及发展? 玉米面糊糊放了段时间有味了还能吃吗? 玉米面煮成粥后有酸味道怎么办去味能喝么8 有玩格斗之皇的? 阴阳师被限制玩法了 5000勾买太鼓大概要多少钱?2 生女孩子祝福语简单3 生了女儿祝福语48 Foxmail中的本地备份邮件怎么恢复 侍忍者官方下载链接在哪里可以找到?1 格斗之皇破解版咋玩儿不了了 手拉手数字会议系统有什么特点呢?1 数字会议系统的优势有哪些?2 梧州市至江口镇地震吗1 言承旭的本名不是叫廖洋震吗?为什么后来叫言承旭呢?8 角筋和箍筋的区别是什么? foxmail恢复本地邮件用什么方法?丢失的邮件三步找回 c语言中mod(m,n)是什么意思?8 魅蓝max和魅蓝u10哪个好 魅蓝note5和魅蓝u10哪个好1 魅族魅蓝u10手机好用吗?30 买魅族的魅蓝5好还是魅蓝U1010 魅蓝U10好用吗?他的优缺点是什么?8 魅蓝U10和魅蓝E哪个好 1962年2角纸币编号xl32921413值多少钱 如何转移到另一个上呢! 15颗糖果,完整的给四个小朋友,怎么分 言承旭的原名叫廖什么???? 玉米面每次发酵都有点酸酸的味道,怎样才能去除酸味?4 广东鑫冠誉商用厨具有限公司怎么样?