歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

用Java開發一個本地服務管理軟件

使用Java開發一個本機服務管理程序,能夠控制本機Tomcat、Apache服務的開啟和關閉,圖形界面控制。用戶可以自己擴展其他服務,用來學習圖形界面編程、多線程、事件響應等都不錯。

一、最終界面
先貼上最終效果圖,圖1為初始化界面,圖二為點擊啟動/停止之後的中間過渡狀態,圖三為啟動成功後彈出的提示框

把動態gif圖片嵌入到jpg背景圖中?用Adobe ImageReady即可辦到

二、初衷

作為一個程序員,電腦裡總是裝了各式各樣的開發工具,這些工具平時用不上,卻一直在後台運行,浪費了大量的資源,為了響應國家“勤儉辦一切事情”的號召,理所當然地要把這些偷偷摸摸吃資源的家伙殺掉。
為了實現這個目的,可以直接在windows系統服務裡面關閉,但是這樣的話,下次再用的時候還要到服務管理器裡面去找,而且說不定我已經記不清服務名了。(有人說可以用dos命令啊,灑家都已經說過了,我連服務名都忘卻了,自然沒法用dos命令)
只有自己做的工具才是最順手的,嘗試自己做個工具管理這些常用的服務,經過幾天的努力,終於做成了如上圖所示的最終結果。期間復習了不少Java方面的知識,下面把開發過程中遇到的一些問題分享一下。
三、 結構
規劃了三個java源文件:
winserviceframe.java:界面
winserviceActionHandler.java:響應管理
winservicecontroller.java:服務控制
界面初始化後,會根據當前時刻各個服務的狀態,顯示出用戶可以進行的操作,如果當前服務正在運行,用戶可以點擊暫停按鈕;如果當前服務已經停止,用戶可以點擊啟動按鈕。
點擊按鈕後,程序會去執行用戶的命令,並將執行結果顯示出來,如果執行成功,按鈕的狀態會發生翻轉,否則保持不變。
四、 遇到的問題和解決的方法
(1) 如何在java代碼裡面實現對服務的控制
Process p = Runtime.getRuntime().exec(“cmd 命令”);
InputStreamReader inputsreader = new InputStreamReader(p.getInputStream());
BufferedReader bufreader = new BufferedReader(inputsreader);
注意Runtime.getRuntime().exec()方法局限性很大,不能處理稍微復雜一點的命令。為了調試的方便,最好把p.getErrorStream()的結果也輸出一下。
(2) 添加按鈕圖片
ImageIcon img = new ImageIcon(this.getClass().getResource("img/test.png"));
buttonon = new JButton(img);
注意java裡面不支持ico格式的圖片,如果上述語句用ico圖片處理的話,會顯示錯誤:at javax.swing.ImageIcon.<init>(Unknown Source)
(3) 彈出提示信息框
使用靜態方法
JOptionPane.showMessageDialog(null,res,"運行結果",JOptionPane.PLAIN_MESSAGE);
(4) 圖形初始化的時候不能顯示控件,必須用鼠標改變一下界面大小才能顯示
必須把frame.setVisible(true);放到界面初始化過程的最後,這樣才能把所有的組件刷出來顯示
(5) 點擊按鈕的之後,運行停頓一下,loading圖片顯示不完整
原因是Runtime.getRuntime( “cmd”)過程有點費時,單線程處理的時候界面無法迅速響應,於是解決的辦法也就有了,將點擊按鈕之後的動作放在另外一個單獨的線程處理,為了讓界面顯示更流暢,可以加一個sleep(10)。
五、 尚待改進的地方
按鈕按下的瞬間圖片應該變扁一些,這樣看起來更有動態感
用定時器循環檢查服務狀態,防止用戶在其他地方更改了服務,導致本程序與實際服務運行情況不符合

下載鏈接:

------------------------------------------分割線------------------------------------------

免費下載地址在 http://linux.linuxidc.com/

用戶名與密碼都是www.linuxidc.com

具體下載目錄在 /2014年資料/9月/22日/用Java開發一個本地服務管理軟件

下載方法見 http://www.linuxidc.com/Linux/2013-07/87684.htm

------------------------------------------分割線------------------------------------------

Copyright © Linux教程網 All Rights Reserved