Timer Swing

http://blog.csdn.net/HideLin/article/details/8201267
import java.awt.*;
import java.awt.event.*;
import java.io.IOException;
import java.util.Calendar;
import javax.swing.*;

public class CloseComputer extends JFrame implements ActionListener{
    //创建成员变量
    //创建实现BorderLayout布局的面板对象panelmain,用于放panelSubnorth面板和panelSubcenter面板
    private JPanel panelMain;
    //创建实现FlowLayout布局的面板对象panelSubnorth,用于放tag提示标签
    private JPanel panelSubnorth;
    //创建实现FlowLayout布局的面板对象panelSubcenter,用于放3个按钮
    private JPanel panelSubcenter;

    //创建三个按钮
    private Button countdown;
    private Button time;
    private Button cancel;
    private String key;
    //创建一个提示标签
    private JLabel tag;

    public CloseComputer(){
        initComponents();
    }

    /**
     * 初始化组件信息
     */
    public void initComponents() {

        panelMain=new JPanel(new BorderLayout(5, 10));

        panelSubnorth=new JPanel(new FlowLayout(3));
        panelSubcenter=new JPanel(new FlowLayout(1,5,5));

        countdown=new Button("倒计时关机");
        time=new Button("定时关机");
        cancel=new Button("取消关机");

        tag=new JLabel("请选择关机方式");

        //将panelMain添加到窗体中
        this.getContentPane().add(panelMain);
        //添加对象panelSubnorth到对象panelMain窗口里
        panelMain.add(panelSubnorth, BorderLayout.NORTH);
        //添加对象panelSubcenter到对象panelMain窗口里
        panelMain.add(panelSubcenter, BorderLayout.CENTER);

        //添加标签对象tag到对象panelSubnorth窗口里
        panelSubnorth.add(tag);

        //添加3个按钮到对象panelSubcenter里
        panelSubcenter.add(countdown);
        panelSubcenter.add(time);
        panelSubcenter.add(cancel);

        //为3个按钮注册事件监听器
        countdown.addActionListener(this);
        time.addActionListener(this);
        cancel.addActionListener(this);

        this.setDefaultCloseOperation(EXIT_ON_CLOSE);
        this.setResizable(false);
        this.setLocation(350, 350);
        this.setSize(400, 400);
        this.setTitle("关机工具");

        this.pack();
    }

    /**
     * 倒计时关机
     */
    public void countdown() {
        //创建字符串面板对象
        key=JOptionPane.showInputDialog(this,"请输入倒计时关机剩余的时间(秒)","输入框",1);
        try {
            Runtime.getRuntime().exec("shutdown -s -t "+key);
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
    /**
     * 定时关机
     */
    public void time(){
        //获取当前系统的时间
        Calendar calendar=Calendar.getInstance();
        int h=calendar.get(Calendar.HOUR);        //获取小时
        System.out.println(h);
        int m=calendar.get(Calendar.MINUTE);    //获取分钟
        int s=calendar.get(Calendar.SECOND);    //获取秒
        String hourtmp,minutetmp,secordtmp;        //保存输入的时间
        int hour,minute,secord;                    //保存转换后的时间
        //输入时间
        hourtmp=JOptionPane.showInputDialog(this,"请输入关机的小时(12小时制)","输入",1);
        minutetmp=JOptionPane.showInputDialog(this,"请输入关机的分钟","输入",1);
        secordtmp=JOptionPane.showInputDialog(this,"请输入关机的秒钟","输入",1);
        //转换时间
        hour=Integer.parseInt(hourtmp);
        minute=Integer.parseInt(minutetmp);
        secord=Integer.parseInt(secordtmp);

        long setTime=timeSum(hour, minute, secord);    //计算输入时间的总和
        long currentlyTime=timeSum(h, m, s);        //计算当前系统时间的总和
        long discrepancyTime=setTime-currentlyTime;    //获取时间差
        if (discrepancyTime<0) {
            try {
                Runtime.getRuntime().exec("shutdown -s");
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }else {
            try {
                Runtime.getRuntime().exec("shutdown -s  -t "+discrepancyTime);
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            JOptionPane.showMessageDialog(this, "恭喜你,设置成功!", "确认", 2);
        }
    }
    /**
     * 计算出时间总和,并返回
     * @param h
     * @param m
     * @param s
     * @return
     */
    public int timeSum(int h,int m,int s) {
        int sum=h*3600+m*60+s;
        return sum;
    }

    /**
     * 取消关机
     */
    public void cancel() {
        JOptionPane.showMessageDialog(this, "你已经成功取消了关机操作!", "消息", 2);
        try {
            Runtime.getRuntime().exec("shutdown -a");
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

    public static void main(String[] args) {
        java.awt.EventQueue.invokeLater(new Runnable() {

            @Override
            public void run() {
                // TODO Auto-generated method stub
                new CloseComputer().setVisible(true);
            }
        });

    }

    @Override
    public void actionPerformed(ActionEvent e) {
        // TODO Auto-generated method stub
        if (e.getSource() == countdown) {
            countdown();
        }
        if (e.getSource() == time) {
            time();
        }
        if (e.getSource() == cancel) {
            cancel();
        }
    }
}
时间: 2024-10-10 14:50:44

Timer Swing的相关文章

javax.swing.Timer类的使用

package com.sadhu; import java.util.*; import java.awt.*; import java.awt.event.*; import javax.swing.*; import javax.swing.Timer; import java.text.SimpleDateFormat; /** Timer类的使用 在一定的时间段内执行一次指定的对象的方法. */ public class Sample {     public static void 

Java Swing 之Timer配合JProgressBar的使用

Timer作为java开发中常用的一个定时工具,配合JProgressBar使用起来还真是方便,只需要调用timer.start()方法就能激活并运行,然后调用stop()方法便能停止,还可以再次通过restart()方法重新使其运行,下面就直接上代码吧: package UsefulKnowledge; import java.awt.BorderLayout; import java.awt.Container; import java.awt.Dimension; import java.

javax.swing.Timer的使用

以指定的间隔触发一个或多个ActionEvent s. 示例使用是使用Timer作为绘制其帧的触发器的动画对象. 设置定时器包括创建一个Timer对象,在其上注册一个或多个动作侦听器,并使用start方法启动定时器. 例如,下面的代码创建并启动每秒一次触发一个动作事件(由第一个参数指定定时器Timer构造函数). Timer构造函数的第二个参数指定一个侦听器来接收定时器的动作事件. public class MyTimer { public static void main(String[] a

javax.swing.Timer类实现定时任务操作

1.定义一个工作类,让它实现ActionListener接口,并重写actionPerformed(),在这个方法中编写定时执行的代码: public class WorkJob implements ActionListener { @Override public void actionPerformed(ActionEvent e) { System.out.println("At the tone, the time is " + new Date()); //定时打印当前时间

java swing 双人五子棋源代码

import java.awt.Color; import java.awt.Font; import java.awt.Graphics; import java.awt.Toolkit; import java.awt.event.MouseEvent; import java.awt.event.MouseListener; import java.awt.image.BufferedImage; import javax.swing.JFrame; import javax.swing.

第12章-Swing编程 --- 使用JProgressBar、ProgressMonitor和BoundedRangeModel创建进度条

第12章-Swing编程 --- 使用JProgressBar.ProgressMonitor和BoundedRangeModel创建进度条 (一)创建进度条 使用JProgressBar,可以很方便的创建进度条,其步骤如下: (1)创建一个JProgressBar对象,创建该对象时也可以指定3个参数,用于设置进度条的排列方向(竖直和水平).进度条的最大值和最小值.也可以在创建该对象时不传入任何参数,而是在后面程序中修改这3个属性. 下面代码创建了JProgressBar对象 //创建一条垂直进

使用Timer类的两个实例 动态时钟

1 package chapter16; 2 3 import javax.swing.*; 4 import chapter15.StillClock; 5 import java.awt.event.*; 6 7 public class ClockAnimation extends JFrame { 8 public class TimerListener implements ActionListener { 9 @Override 10 public void actionPerfor

示例 Groovy中的 Timer 和 TimerTask

import java.util.timer.* class TimerTaskExample extends TimerTask {         public void run() {          println new Date()         } } int delay = 5000   // delay for 5 sec. int period = 1000  // repeat every sec. Timer timer = new Timer() timer.sch

java中基于timer计时器的图片播放

所有注释放在代码中...(图片的加入使用硬代码) package com.sxt.jtime; import java.awt.BorderLayout; public class Itimer_test extends JFrame { private JPanel contentPane; private int index = 0;//图片播放计数器 private ImageIcon[] img;//声明数组用来存放要播放的图片 JLabel label;//声明为全局变量用来显示图片