java大作业(控制台程序,没有任何框架,大学生必备)-- 番茄计时器

本篇分享一个Java期末大作业系统,Java期末大作业设计 番茄计时器
主页还有,多瞅瞅,别直接就抄了,你同学也在抄,要是答案都给你了还不会用,我建议你还是学一下qwq

package demo2;

import javax.swing.*;

import java.awt.*;
import java.awt.event.*;

public class TomatoTimer {
    private JFrame frame; // 创建一个JFrame对象,用于显示番茄工作法计时器
    private JLabel label; // 创建一个JLabel对象,用于显示计时器的时间
    private int minutes; // 创建一个整型变量,用于存储分钟数
    private int seconds; // 创建一个整型变量,用于存储秒数
    private Timer timer; // 创建一个Timer对象,用于计时

    public TomatoTimer() { // 构造函数,用于初始化番茄工作法计时器
        frame = new JFrame("番茄工作法"); // 创建一个标题为“番茄工作法”的JFrame对象
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // 设置关闭窗口时退出程序
        frame.setSize(300, 200); // 设置窗口大小为300x200
        frame.setLayout(new BorderLayout()); // 设置窗口布局为BorderLayout

        label = new JLabel("25:00", SwingConstants.CENTER); // 创建一个初始值为“25:00”的JLabel对象
        label.setFont(new Font("Arial", Font.BOLD, 50)); // 设置字体为Arial,加粗,大小为50
        frame.add(label, BorderLayout.CENTER); // 将label添加到窗口中央

        JPanel buttonPanel = new JPanel(new GridLayout(1, 4)); // 创建一个GridLayout为1x4的JPanel对象
        JButton startButton = new JButton("开始"); // 创建一个文本为“开始”的JButton对象
        startButton.addActionListener(new StartButtonListener()); // 为startButton添加ActionListener
        buttonPanel.add(startButton); // 将startButton添加到buttonPanel中
        JButton stopButton = new JButton("停止"); // 创建一个文本为“停止”的JButton对象
        stopButton.addActionListener(new StopButtonListener()); // 为stopButton添加ActionListener
        buttonPanel.add(stopButton); // 将stopButton添加到buttonPanel中
        JButton resetButton = new JButton("重置"); // 创建一个文本为“重置”的JButton对象
        resetButton.addActionListener(new ResetButtonListener()); // 为resetButton添加ActionListener
        buttonPanel.add(resetButton); // 将resetButton添加到buttonPanel中
        JButton setTimeButton = new JButton("设置时间"); // 创建一个文本为“设置时间”的JButton对象
        setTimeButton.addActionListener(new SetTimeButtonListener()); // 为setTimeButton添加ActionListener
        buttonPanel.add(setTimeButton); // 将setTimeButton添加到buttonPanel中
        frame.add(buttonPanel, BorderLayout.SOUTH); // 将buttonPanel添加到窗口南侧

        minutes = 25; // 初始化分钟数为25
        seconds = 0; // 初始化秒数为0
        timer = new Timer(1000, new TimerListener()); // 创建一个间隔为1000ms的Timer对象,并为其添加ActionListener
    }

    public void start() { // 启动番茄工作法计时器
        frame.setVisible(true); // 将窗口设置为可见
    }

    private class StartButtonListener implements ActionListener { // 开始按钮的ActionListener
        public void actionPerformed(ActionEvent e) {
            timer.start(); // 启动计时器
        }
    }

    private class StopButtonListener implements ActionListener { // 停止按钮的ActionListener
        public void actionPerformed(ActionEvent e) {
            timer.stop(); // 停止计时器
        }
    }

    private class ResetButtonListener implements ActionListener { // 重置按钮的ActionListener
        public void actionPerformed(ActionEvent e) {
            timer.stop(); // 停止计时器
            minutes = 25; // 将分钟数重置为25
            seconds = 0; // 将秒数重置为0
            label.setText(String.format("%02d:%02d", minutes, seconds)); // 更新label的文本
        }
    }

    private class SetTimeButtonListener implements ActionListener { // 设置时间按钮的ActionListener
        public void actionPerformed(ActionEvent e) {
            String input = JOptionPane.showInputDialog(frame, "Enter time in minutes (max 60):"); // 弹出一个对话框,提示用户输入分钟数
            try {
                int newMinutes = Integer.parseInt(input); // 将用户输入的字符串转换为整型
                if (newMinutes > 0 && newMinutes <= 60) { // 如果输入的分钟数在1到60之间
                    minutes = newMinutes; // 更新分钟数
                    seconds = 0; // 将秒数重置为0
                    label.setText(String.format("%02d:%02d", minutes, seconds)); // 更新label的文本
                } else { // 如果输入的分钟数不在1到60之间
                    JOptionPane.showMessageDialog(frame, "无效输入,请输入1-60之间的数字"); // 弹出一个对话框,提示用户输入1到60之间的数字
                }
            } catch (NumberFormatException ex) { // 如果用户输入的不是数字
                JOptionPane.showMessageDialog(frame, "无效输入,请输入1-60之间的数字"); // 弹出一个对话框,提示用户输入1到60之间的数字
            }
        }
    }

    private class TimerListener implements ActionListener { // 计时器的ActionListener
        public void actionPerformed(ActionEvent e) {
            if (minutes == 0 && seconds == 0) { // 如果时间到了
                timer.stop(); // 停止计时器
                JOptionPane.showMessageDialog(frame, "时间到!"); // 弹出一个对话框,提示用户时间到了
            } else if (seconds == 0) { // 如果秒数为0
                minutes--; // 分钟数减1
                seconds = 59; // 秒数重置为59
            } else { // 如果秒数不为0
                seconds--; // 秒数减1
            }
            label.setText(String.format("%02d:%02d", minutes, seconds)); // 更新label的文本
        }
    }

    public static void main(String[] args) { // 主函数
        TomatoTimer timer = new TomatoTimer(); // 创建一个TomatoTimer对象
        timer.start(); // 启动番茄工作法计时器
    }
}


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值