一、最终界面
先贴上最终效果图,图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://download.csdn.net/detail/mingziday/7323369

用Java开发一个本地服务管理软件的更多相关文章

  1. 适合新手:从零开发一个IM服务端(基于Netty,有完整源码)

    本文由“yuanrw”分享,博客:juejin.im/user/5cefab8451882510eb758606,收录时内容有改动和修订. 0.引言 站长提示:本文适合IM新手阅读,但最好有一定的网络 ...

  2. 基于SpringBoot开发一个Restful服务,实现增删改查功能

    前言 在去年的时候,在各种渠道中略微的了解了SpringBoot,在开发web项目的时候是如何的方便.快捷.但是当时并没有认真的去学习下,毕竟感觉自己在Struts和SpringMVC都用得不太熟练. ...

  3. .NET 开发一个服务器 应用管理工具

    一:背景 1.Anno.Deploy Anno.Deploy可以和 Anno集成使用,用于部署新的服务.启动服务.停止服务.清理服务.也可以单独使用,用于守护程序. 使用方法 1.和Anno集成使用 ...

  4. 用Java开发局域网内文件传输软件遇到的一些问题

    项目地址:https://github.com/b84955189/FileTransfer 由于巨懒的我不太喜欢使用U盘操作文件,特此开发一个简易的文件传输程序. 目前仅限局域网内传输,后期会尝试写 ...

  5. 用Java开发一个工具类,提供似于js中eval函数功能的eval方法

    今天在看到<Java疯狂讲义>中一个章节习题: 开发一个工具类,该工具类提供一个eval()方法,实现JavaScript中eval()函数的功能--可以动态运行一行或多行程序代码.例如: ...

  6. OpenResty从入门到开发一个网关服务(使用etcd作为注册中心)

    简介 OpenResty(也称为 ngx_openresty)是一个全功能的 Web 应用服务器.它打包了标准的 Nginx 核心,很多的常用的第三方模块,以及它们的大多数依赖项. 通过揉和众多设计良 ...

  7. 使用Golang开发一个本地代理

    引言 最近需要对接一个接口,人家提供了两种调用方式,第一种是基于IE浏览器的Active,第二种是动态链接库dll.我们公司的产品不支持IE,所以只能通过调用dll来完成了. 之前我已经用Java实现 ...

  8. 001、JAVA开发环境安装与eclipse软件第一印象

    折腾了快1个星期,一直没有成功装好JAVA环境,eclipse一直打不开,java环境配置的问题真是不得不吐槽一下,太烂了.今天反反复复折腾好久,终于搞定了.用的金山毒霸,方法如下: 一.打开金山毒霸 ...

  9. 利用java开发一个双击执行的小程序

    之前我们利用java写了很多东西,但是好像都没有什么实际意义. 因为有意义桌面小程序怎么都得有个界面,可是界面又不太好搞.或者 了解到这一层的人就少之又少了. 呀,是不是还得开辟一些版面来介绍awt和 ...

随机推荐

  1. AFNetworking2.x 使用过程中遇到的问题

    1.//以下写一下关于AFNetworking2.0的GET数据请求问题,刚開始的时候没有写以下标红的代码,所以导致有一个问题.错误显演示样例如以下: Error: Error Domain=AFNe ...

  2. [每日一题] 11gOCP 1z0-053 :2013-10-12 RESULT_CACHE在哪个池?.............................44

    转载请注明出处:http://blog.csdn.net/guoyjoe/article/details/12657479 正确答案:B   Oracle 11g 新特性:Result Cache , ...

  3. java String 两种不同的赋值 比较

    原文:http://blog.163.com/woshihezhonghua@126/blog/static/1271436362012101214031911/ 首先明确一点,String是一个类. ...

  4. 笨办法学C 练习

    http://c.learncodethehardway.org/book/index.html

  5. 用GDB排查Python程序故障

        某Team在用Python开发一些代码,涉及子进程以及设法消除僵尸进程的需求.实践中他们碰上Python程序非预期退出的现象.最初他们决定用GDB调试Python解释器,查看exit()的源头 ...

  6. javascript调试 console

    Console命令详解,让调试js代码变得更简单   Firebug是网页开发的利器,能够极大地提升工作效率. 但是,它不太容易上手.我曾经翻译过一篇<Firebug入门指南>,介绍了一些 ...

  7. Understanding the Router

    Understanding the Router Our module is coming along nicely. However, we're not really doing all that ...

  8. iOS之深入了解控制器View的加载

    前言 在面试中,面试官可能会问这样的问题,loadView有什么作用,它与viewDidLoad有何区别 首先我们得知道,控制器view是通过懒加载的方式进行加载的,即用到的时候再加载. loadVi ...

  9. ios快捷键

    分屏:cmd + option + return 退出分屏:cmd + return cmd + option + [ 代码上跳 cmd + [ 代码左移

  10. How to use Oprofile tool to analysis program's performance

    You can get Oprofile RPM from https://www.rpmfind.net/ How to use Oprofile tools: Get report Steps: ...