1. 程式人生 > >java實現關機、重啟、開啟運用程式及網站

java實現關機、重啟、開啟運用程式及網站

這裡主要通過面對物件和麵對過程兩種方法來實現電腦關機、重啟、工作管理員、開啟運用軟體,如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