java 实现的定时关机整蛊小程序

package com.softeem.app;


import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.IOException;
import java.util.Timer;
import java.util.TimerTask;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTextField;

/**定时关机小程序
 * */
public class Power {
	
	private Runtime r = Runtime.getRuntime();
	
	{
		UI ui = new UI();
	}
	
	/**启动关机计划
	 * 
	 * */
	public void start (int time ) {
		try {
			r.exec("shutdown -s -t "+time);
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
	}
	/**取消计划*/
	public void abort () {
		try {
			r.exec("shutdown -a ");
			
			
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
	}
	
	class UI extends JFrame implements ActionListener{
		private JButton btnStrat;
		private JButton btnCancel;
		//private JTextField inputTime;
		/**文本提示控件*/
		private JLabel tips;
		/**接收输入的输入框*/
		
		
		public UI() {
			//设置标题
			setTitle("女朋友不在家玩的游戏");
			//设置窗口大小
			setSize(400, 200);
			//设置当前界面显示的相对位置,设置为null时,界面会在屏幕中水平垂直居中
			setLocationRelativeTo(null);
			//禁止窗口大小修改
			setResizable(false);
			//设置当前窗体总是在最顶层
			setAlwaysOnTop(true);
			//设置当窗体关闭时的默认操作
			setDefaultCloseOperation(EXIT_ON_CLOSE);
			init();
			//显示窗体
			setVisible(true);
		}
		/**组件初始化的方法
		 * */
		private void init() {
			//设置界面中的布局方式
			setLayout(null);
			btnStrat = new JButton("开始游戏");
			btnStrat.setBounds(125, 60, 150, 40);
			/*btnCancel = new JButton("退出游戏");
			btnCancel.setBounds(190, 60, 150, 40);*/
			//inputTime = new JTextField();
			//inputTime.setBounds(20, 20, 340, 30);
			tips=new JLabel("这里显示提示信息");
			tips.setBounds(20, 120, 340, 30);
			//讲控件加入到窗体中
			add(btnStrat);
			//add(btnCancel);
			//add(inputTime);
			add(tips);
			String s;
			//为按钮绑定操作指令
			btnStrat.setActionCommand("start");
			
			//btnCancel.setActionCommand("cancel");
			//为启动按钮绑定事件   this关键字 多态
			btnStrat.addActionListener(this);
			//btnCancel.addActionListener(this);
		
		}
		
		@Override//重写了actionPerformed()方法 添加点击事件
		public void actionPerformed(ActionEvent e) {
			//获取被触发事件的控件的操作指令
			String s = e.getActionCommand();//获取点击的事件
			switch (s) {
			case "start":
				String time = "10";//inputTime.getText();
				try {
					int t =Integer.parseInt(time);
					start(t);
					tips.setText(t+"秒后关机");
					//实现倒计时,参考Timer TimerTask
				   final Timer timer = new Timer();
				    
					timer.schedule(new TimerTask() {
						private int i=t;
						@Override
						public void run() {
							//执行的任务
							tips.setText("倒计时"+(i--)+"秒");//每秒i-1来实现倒计时的动态效果
							if(i==0) {
								this.cancel();
								System.exit(0);
							}
						
						}
						
					},0,1000);//每秒执行一次new TimerTask任务
					
				} catch (NumberFormatException ex) {
					tips.setText("请输入正确的关机时间");
					// TODO: handle exception
				}
				
				break;
			/*case "cancel":
				abort();
				tips.setText("计划取消");
				System.exit(0);
				break;*/

			}
			
			
			
		}
		public void main(String[] args) {
			
			new Power();
			
		}
		
	}
}

实现的效果

在这里插入图片描述
点击开始游戏后电脑会在10秒内关机 由于我吧取消给注释了所以只能通过cmd窗口输入shutdown -a 来取消

主要用到了Runtime 类 exec()方法 Timer Timertask

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值