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