这里主要通过面对对象和面对过程两种方法来实现电脑关机、重启、任务管理器、打开运用软件,如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