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