Java定时器小工具

package com.robotmen.timer;

import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.Font;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Timer;
import java.util.TimerTask;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.SwingConstants;

public class Main extends JFrame {

    private static JPanel minutePanel = new JPanel();
    private static JPanel secondPanel = new JPanel();
    private static JPanel btnPanel = new JPanel();
    private static JButton beginButton = new JButton();
    private static JLabel timerLabel = new JLabel();
    private static int minute = 0;
    private static int second = 0;
    private static int totalSecond = 0;
    private static String timerString = "";
    
    public static void main(String[] args) {
        Main me = new Main();
        
    }

    public Main() {
        JTextField minuteInput = new JTextField();
        minuteInput.setColumns(4);
        JLabel minuteLabel = new JLabel("分");
        Font font = new Font("宋体", Font.PLAIN, 32);
        minuteInput.setFont(font);
        minuteLabel.setFont(font);
        JTextField secondInput = new JTextField();
        secondInput.setColumns(4);
        JLabel secondLabel = new JLabel("秒");
        secondInput.setFont(font);
        secondLabel.setFont(font);
        
        minutePanel.add(minuteInput);
        minutePanel.add(minuteLabel);
        secondPanel.add(secondInput);
        secondPanel.add(secondLabel);
        beginButton.setText("开始计时");
        beginButton.setFont(font);
        btnPanel.add(beginButton);
        btnPanel.setLayout(new FlowLayout(FlowLayout.CENTER));
        beginButton.addActionListener(new ActionListener(){
            public void actionPerformed(ActionEvent e) {
                totalSecond = Integer.parseInt(minuteInput.getText())*60+ Integer.parseInt(secondInput.getText());
                minute = totalSecond/60;
                second = totalSecond%60;
                timerString = minute+"分 "+second+"秒";
                timerLabel.setText(timerString);
                timerLabel.paintImmediately(timerLabel.getBounds());//getVisibleRect
                
                Timer timer = new Timer();
                TimerTask timerTask = new TimerTask() {
                    @Override
                    public void run() {
                        if (totalSecond > 0) {
                            totalSecond --;
                            minute = totalSecond/60;
                            second = totalSecond%60;
                            timerString = minute+"分 "+second+"秒";
                            timerLabel.setText(timerString);
                        }else {
                            totalSecond = 0;
                            timerLabel.setText("");
                            timer.cancel();
                            
                            Main.this.toFront();
                            JOptionPane.showMessageDialog(null, "计时结束!!!!!"); 
                        }
                    }
                };
                timer.schedule(timerTask, 1000, 1000);
            }
        });
        
        this.setSize(480, 180);
        this.setLayout(new FlowLayout(FlowLayout.LEFT, 5, 0));
        
        this.getContentPane().add(minutePanel);
        this.getContentPane().add(secondPanel);
        this.getContentPane().add(btnPanel);
        
        timerLabel.setFont(font);
        timerLabel.setSize(300, 80);
        timerLabel.setText(timerString);
        this.getContentPane().add(timerLabel);
        Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize(); //获取屏幕大小
        this.setLocation((screenSize.width-200)/2, (screenSize.height-250)/2);
        this.setVisible(true);
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        this.setTitle("Java计时器");
        
    }
}
 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值