用java写关机软件_用JAVA编写的一个自动关机软件,帮忙优化一下。

已结贴√

问题点数:20 回复次数:8

ca56232b3bbedf9a539d07f37fffb99a.gif

3144d8b7615c79d9f638db40d5689d26.gif

a218af6549b45ee526caf607ebff1358.gif

0f8df0e29816ae721419de940fb833d1.gif

用JAVA编写的一个自动关机软件,帮忙优化一下。

/*定时关机程序*/

import javax.swing.*;

import java.awt.*;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import java.util.*;

import *;

public class AutoShutdown extends JFrame implements ActionListener,Runnable{

JLabel copyright,jlclew1,jlhour,jlminute,jlclew2,leave;

JTextField jthour,jtminute;

JButton run,exit;

boolean falg=false;

public AutoShutdown(){

super("自动关机");

}

//窗体布局

public void setPane(){

copyright=new JLabel("制作人:天马行空",JLabel.CENTER);

copyright.setBounds(50,5,200,50);

jlclew1=new JLabel("系统将于:");

jlclew1.setBounds(10,65,80,30);

jthour=new JTextField();

jthour.setBounds(90,65,60,30);

jlhour=new JLabel(" 时 ");

jlhour.setBounds(150,65,30,30);

jtminute=new JTextField();

jtminute.setBounds(180,65,60,30);

jlminute=new JLabel(" 分 ");

jlminute.setBounds(240,65,30,30);

jlclew2=new JLabel("后关机");

jlclew2.setBounds(270,65,80,30);

leave=new JLabel("请输入时间",JLabel.CENTER);

leave.setBounds(50,100,200,50);

run=new JButton("开始运行");

run.setBounds(60,160,100,30);

run.addActionListener(this);

exit=new JButton("结束");

exit.setBounds(180,160,100,30);

exit.addActionListener(this);

Container ct=this.getContentPane();

ct.setLayout(null);

ct.add(copyright);

ct.add(jlclew1);

ct.add(jthour);

ct.add(jlhour);

ct.add(jtminute);

ct.add(jlminute);

ct.add(jlclew2);

ct.add(leave);

ct.add(run);

ct.add(exit);

this.setSize(350,230);

this.setVisible(true);

}

/*public void shutdown(){

Runtime rt=Runtime.getRuntime();

String str="shutdown -l";

try{

rt.exec("shutdown -a");

}catch(IOException e){System.out.println("调用关机命令时系统出错");}

System.exit(0);

}

*/

public void getDateMonth(){

int hour,minute,dthour,dtminute,dt1,dt2;

//dthour 表示当前小时

//dtminute 表示当前分钟

//dt1 表示程序将在某小时关机

//dt2 表示程序将在某分钟关机

try{

if(jthour.getText().equals("")){

minute=Integer.parseInt(jtminute.getText());

hour=0;

}

else if(jthour.getText().equals("")){

hour=Integer.parseInt(jthour.getText());

minute=0;

}

else{

minute=Integer.parseInt(jtminute.getText());

hour=Integer.parseInt(jthour.getText());

}

//获取要关机的时间

dt1=new Date().getHours()+hour;

dt2=new Date().getMinutes()+minute;

// this.setVisible(false);

while(true){        不用while行吗?太费资源。

//获取当前时间

dthour=new Date().getHours();

dtminute=new Date().getMinutes();

System.out.println(dthour+" "+dtminute+" "+(new Date().getSeconds()));

//为什么leave.setText()显示不出来倒计时呀。

6e7baff6766b1f5a3e042834c7f287b0.gif                leave.setText(((dt1-dthour)*3600+(dt2-dtminute)*60)+"后关机");

//系统关机提示

if((dt2-dtminute)<=2 && (dt1-dthour)==0 && !falg){

int a=JOptionPane.showConfirmDialog(null,"程序将在2分钟以内关机您确定吗?","关机提示",0,0 );

if(a==1){

AutoShutdown as=new AutoShutdown();

as.setPane();

break;

}

falg=true;

}

if(dt1==dthour && dt2==dtminute){

run();

break;

}

Thread.sleep(60000);

}

}catch(NumberFormatException e){leave.setText("时间格式不正确");}

catch(HeadlessException e2){e2.printStackTrace(); }

catch(InterruptedException e1){e1.printStackTrace();}

return;

}

//设置按钮监听

public void actionPerformed(ActionEvent e) {

if(e.getSource().equals(run)){

getDateMonth();

}

else

System.exit(0);

}

public static void main(String args[]){

AutoShutdown as=new AutoShutdown();

as.setPane();

}

@Override

//调用关机命令

public void run() {

exec("C:\\WINDOWS\\system32\\calc.exe");

}

private void exec(String cmd) {

try {

Runtime.getRuntime().exec(cmd);

} catch (IOException e) {

e.printStackTrace();

}

}

}

大家看看这个程序哪些地方要改呀。

怎么判断系统时间与关机时间是不是相等,不用while语句行吗?。

我没有让程序关机而是打开了计算器,要让大家运行时关机可就不好意思了。

15678b147fd621ec175e76ab4a2309a8.gif

[本帖最后由 ggggwffgqeg 于 2009-11-1 14:13 编辑]

搜索更多相关主题的帖子:

自动 编写 软件 JAVA

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值