java实现关机、重启、打开运用程序及网站

来源:互联网 发布:淘宝搜索流量软件 编辑:程序博客网 时间:2024/05/01 07:55

这里主要通过面对对象和面对过程两种方法来实现电脑关机、重启、任务管理器、打开运用软件,如QQ音乐,以及打开网站,比如自己的博客。

先给出命令:

        shutdown -s -t 1       指定1秒后关机

        shutdown -r              重启

        shutdown -r -f -t 10 指定10秒后重启,并且强制结束其他程序

       explorer http://blog.csdn.net/Giving_bestself 打开网站

       taskmgr  任务管理器

都是调用控制台命令完成动作


什么是面对对象、面对过程呢?

面对过程是分析解决问题所需的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了。

面对对象是把构成问题事务分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为了描叙某个事物在整个解决问题的步骤中的行为


实现代码:

Runtime.getRuntime().exec( ) //传入执行命令


面对过程:


public class MainJframe {


static JButton shutdown;
static JButton upqq;
static JButton upbaidu;
static JButton task;

public static void main(String[] args) {
// TODO Auto-generated method stub
JFrame jf = new JFrame();

//窗体设置
init(jf);
//添加按钮
addButton(jf);
//添加监听事件
addListener(jf);
jf.setVisible(true);


}


private static void addListener(JFrame jf) {
ActionListener a = new ActionListener() {

@Override
public void actionPerformed(ActionEvent e) {
Runtime rt = Runtime.getRuntime();
//获取按钮的内容
String text = e.getActionCommand();
if(text.equals("关机"))
{
try {
rt.exec("shutdown -s-t 600");
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
shutdown.setText("取消关机");
}
else if(text.equals("QQ音乐"))
{
try {
rt.exec("D:/Program Files (x86)/Tencent/QQMusic/QQMusic1257.0.42.18/QQMusic.exe");
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
else if(text.equals("取消关机"))
{
try {
rt.exec("shutdown -a");
shutdown.setText("关机");
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
else if(text.equals("百度"))
{
try {
rt.exec("explorer http://www.baidu.com");
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
else if(text.equals("任务管理器"))
{
try {
rt.exec("taskmgr");
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
}
};

shutdown.addActionListener(a);
upqq.addActionListener(a);
upbaidu.addActionListener(a);
task.addActionListener(a);

}


private static void addButton(JFrame jf) {
shutdown = new JButton("关机");
upqq = new JButton("QQ音乐");
upbaidu = new JButton("百度");
task = new JButton("任务管理器");

jf.add(shutdown);
jf.add(upqq);
jf.add(upbaidu);
jf.add(task);

}

private static void init(JFrame jf) {
jf.setTitle("快捷");
jf.setSize(350, 180);
jf.setLocationRelativeTo(null);
jf.setLayout(new FlowLayout());
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

}


}

看起来是不是有种乱乱的感觉?面对对象相对就清晰多了。

以下是面对对象代码展示

首先看看窗体运用

public class Mainshow {


public static void main(String[] args) {
Tools tool = new Tools();
//窗体设置
tool.init();
//按钮添加
tool.addButton();
//添加监听
tool.addlistener();
tool.setVisible(true);


}


}

具体实现Tools类

//窗体设置程序


public class Tools extends JFrame{


JButton shutdown;
JButton upqq;
JButton upbaidu;
JButton cq;
JButton task;
Runtime rt = Runtime.getRuntime();

       //窗体设置
public void init() {
setTitle("快捷小工具");
setSize(350, 180);
setLocationRelativeTo(null);
setLayout(new FlowLayout());
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

}

      //添加按钮
public void addButton() {
shutdown = new JButton("关机");
upqq = new JButton("QQ音乐");
upbaidu = new JButton("我的博客");
cq = new JButton("重启");
task = new JButton("任务管理器");

add(shutdown);
add(cq);
add(upqq);
add(upbaidu);
add(task);

}

       //按钮监听
public void addlistener() {
ActionListener a = creatActionlistener();

shutdown.addActionListener(a);
upqq.addActionListener(a);
upbaidu.addActionListener(a);
cq.addActionListener(a);
task.addActionListener(a);

}

private ActionListener creatActionlistener() {
ActionListener a = new ActionListener() {

@Override
public void actionPerformed(ActionEvent e) {
String text = e.getActionCommand();
String com = upcx(text);

try {
rt.exec(com);
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
};
return a;
}

     //返回命令
protected String upcx(String text) {

if(text.equals("关机"))
{
shutdown.setText("取消关机");
return "shutdown -s -t 600";                               //关机命令

}
else if(text.equals("QQ音乐"))
{
return "D:/Program Files (x86)/Tencent/QQMusic/QQMusic1257.0.42.18/QQMusic.exe";
}
else if(text.equals("取消关机"))
{
shutdown.setText("关机");               
return "shutdown -a";                                 //取消关机命令
}
else if(text.equals("我的博客"))
{
return "explorer http://blog.csdn.net/Giving_bestself";              //打开博客
}
else if(text.equals("任务管理器"))
{
return "taskmgr";                                                //任务管理器
}
else if(text.equals("重启")){
return "shutdown -r";                                         //重启
}
return "";
}

}

面对对象功能上的统一保证了面对对象设计的可扩展性。比如我第一天写了这个,第二天boss要我写登录界面,程序员的苦逼生活,不想重写,怎么破,改!

如果你从面对过程上改,那么,要删,要加,还不如重写。

从面对对象上,好吧,注释一下按钮,添加相应控件。嗯,就这样,可以愉快玩耍了。方便代码重用。


最后,说一点点,类的构造方法没有返回值,如果加上返回值,就变成了普通方法,不能再用new来构造。

比如

class student

{

//public student()//默认构造

public void student() //加入返回类型

}

student s = new student()将会出错。

个人的理解,可能不够全面。

具体面对对象与面对过程的区别可见http://blog.sina.com.cn/s/blog_4d1f40c00100mcpw.html

1 0