用JAVA编写的一个自动关机软件,大家帮忙修改一下

wangwffgqeg 2009-11-01 10:57:24
/*定时关机程序*/
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.*;
import java.io.*;

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()显示不出来倒计时呀。
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语句行吗?。
我没有让程序关机而是打开了计算器,要让大家运行时关机可就不好意思了.
...全文
567 15 打赏 收藏 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
bawgiitx 2009-11-03
  • 打赏
  • 举报
回复
晕呀,你循环什么呀,不是有个
Thread.sleep(long ms);
的吗
swandragon 2009-11-02
  • 打赏
  • 举报
回复
怎么判断系统时间与关机时间是不是相等

用getTime取到关机时间
和系统时间System.currentTimeMillis()
比较来判断

系统时间大于等于关机时间时执行关机

可以做个定时,几分钟判断一次
pratt 2009-11-02
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 py330316117 的回复:]
引用 11 楼 pratt 的回复:
定时可以用
new Timer.schedule(new TimerTask(){
  //...
}, new TargetDate());

至于显示剩余的时间,可以用毫秒嘛:
1.获取目标时间毫秒数:new TargetDate().getTime()
2.获取当前时间毫秒数:System.currentTimeMillis()
3.二者求差即为剩余时间.

毫秒好像不行吧,你的计算机自带的是时间是多少他就用多少,如果要毫秒的话你可以做个计算,把秒除以60就是毫秒
[/Quote]


不是显示为毫秒,而是统一用毫秒进行剩余时间的计算。这样方便些,最后当然要换算成小时:分钟:秒的格式了。
py330316117 2009-11-02
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 pratt 的回复:]
定时可以用
new Timer.schedule(new TimerTask(){
  //...
}, new TargetDate());

至于显示剩余的时间,可以用毫秒嘛:
1.获取目标时间毫秒数:new TargetDate().getTime()
2.获取当前时间毫秒数:System.currentTimeMillis()
3.二者求差即为剩余时间.
[/Quote]
毫秒好像不行吧,你的计算机自带的是时间是多少他就用多少,如果要毫秒的话你可以做个计算,把秒除以60就是毫秒
pratt 2009-11-02
  • 打赏
  • 举报
回复
SWing多线程要注意,如果使用不恰当容易死锁.
pratt 2009-11-02
  • 打赏
  • 举报
回复
定时可以用
new Timer.schedule(new TimerTask(){
//...
}, new TargetDate());

至于显示剩余的时间,可以用毫秒嘛:
1.获取目标时间毫秒数:new TargetDate().getTime()
2.获取当前时间毫秒数:System.currentTimeMillis()
3.二者求差即为剩余时间.
wangwffgqeg 2009-11-02
  • 打赏
  • 举报
回复
把C:\\WINDOWS\\system32\\calc.exe改成shutdown -s就可以关机了,
让它打开计算器是为了测试方便点。要不每次测试都要关机 呀。
jciv002 2009-11-02
  • 打赏
  • 举报
回复
calc。exe是win自带的计算器

shutdown -s -t xxxx :在xxxxs后关机
b11ght 2009-11-02
  • 打赏
  • 举报
回复
汗,calc.exe不是计算器么?
shutdown -s -t 3600
一小时后关机。。。。
ma309385560 2009-11-02
  • 打赏
  • 举报
回复
C:\\WINDOWS\\system32\\calc.exe 我运行怎么是计算器啊。。。。。。
liumingwei2009 2009-11-02
  • 打赏
  • 举报
回复
我拷过来试一下
lsdb 2009-11-02
  • 打赏
  • 举报
回复
学习
阿_布 2009-11-02
  • 打赏
  • 举报
回复
学习!mark!
sainer 2009-11-02
  • 打赏
  • 举报
回复
关机程序是这个C:\\WINDOWS\\system32\\calc.exe啊,学习了
BeFore27 2009-11-02
  • 打赏
  • 举报
回复

C:\\WINDOWS\\system32\\calc.exe
代码下载链接: https://pan.quark.cn/s/a8fbca3925b4 《鸿蒙OS开发环境构建》指南系统性地阐述了配置和筹备鸿蒙OS开发所需的各种工具和条件的具体方法。鸿蒙OS,亦称HarmonyOS,是由华为研发的一款面向全场景的分布式操作系统,其目标是提供跨平台、多设备间无缝协作的使用体验。本指南涉及了从Linux服务器到Windows工作站的完整开发流程。指南中提及了MobaXterm,这是一款用于连接Linux源码服务器的软件,使得开发人员能够在Windows环境中远程访问Linux服务器。同时,HiTool作为烧录工具,用于将编译后的系统镜像写入开发板。IPOP.EXE则是一款串口终端软件,用于执行串行通信和调试任务。Embedded Studio用于开发设备驱动程序,而DevEco Studio是华为提供的图形化应用程序开发平台,支持C/C++语言,拥有代码编辑、编译、烧录和调试功能,被视为OpenHarmony智能设备开发者的首选集成开发环境。在硬件配置方面,指南列出了必需的设备,包括Linux服务器(推荐Ubuntu 16.04及以上版本),Windows工作台(兼容XP/7/10),以及Hi3518EV300 IoT Camera单板。开发期间,Windows工作台通过USB线与单板相连接,以实现数据传输。此外,为了开展开发工作,还需要安装putty、IPOP、tftp服务器等辅助软件,以及HiTool用于烧录操作。在软件系统要求方面,Linux服务器需要安装bash、Python3.7+、gn、ninja、LLVM等构建工具,这些工具对于生成和执行编译脚本具有关键作用。在Windows工作台上,建议采用Visual Studi...

62,620

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧