小型电脑操作窗口的设计及实现

本次课程主要讲了一个小型电脑操作窗口的设计以及实现,下面首先进行成果展示:
窗口设计如图

当点击图示“关机”按钮时,“关机”按钮会变成“取消关机”,电脑将会在10000秒后关机,点击“取消关机”,则可以取消操作。“重启”按钮效果在10000秒后关机重启。
关机
取消关机

若点击QQ按钮,将会打开QQ软件。
QQ

java代码主体如下:

package Java_2;

import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.IOException;

import javax.swing.*;

public class First extends JFrame{
	public void initFrame(){
		//javax.swing.JFrame f=new JFrame();     //定义一个窗体并设置参数
		this.setTitle("电脑操作界面");
		this.setSize(400, 200);
		this.setLocationRelativeTo(null);//位置锁定在屏幕中间
		this.setDefaultCloseOperation(3);//设置窗体默认程序关闭方式,3是退出3,1是不退出
		
		FlowLayout fl=new FlowLayout();//设置布局(流式布局)
		this.setLayout(fl);
		
		JButton jb=new JButton();//定义按钮
		jb.setText("关机");
		this.add(jb);
		
		JButton jb2=new JButton();
		jb2.setText("重启");
		this.add(jb2);
		
		JButton jb3=new JButton();
		jb3.setText("QQ");
		this.add(jb3);
		
		ActionListener action=new ActionListener(){
			public void actionPerformed(ActionEvent e){
				String str=e.getActionCommand();//获取触发监听器的按钮的Text
				//System.out.println(str);
				if("关机".equals(str)){
					Runtime run=Runtime.getRuntime();//延迟10000秒后关机
					try {
						run.exec("shutdown -s -t 10000");
					} catch (IOException e1) {
						// TODO Auto-generated catch block
						e1.printStackTrace();
					}
					jb.setText("取消关机");
				}
				else if("重启".equals(str)){
					Runtime run=Runtime.getRuntime();//延迟10000秒后重启
					try {
						run.exec("shutdown -r -t 10000");
					} catch (IOException e1) {
						// TODO Auto-generated catch block
						e1.printStackTrace();
					}
				}
				else if("QQ".equals(str)){
					Runtime run=Runtime.getRuntime();//打开位于C盘中的QQ软件
					try {
						run.exec("C:\\Program Files (x86)\\Tencent\\QQ\\Bin\\QQ.exe");
					} catch (IOException e1) {
						// TODO Auto-generated catch block
						e1.printStackTrace();
					}
				}
				else if("取消关机".equals(str)){
					Runtime run=Runtime.getRuntime();//延迟10000秒后关机
					try {
						run.exec("shutdown -a");
					} catch (IOException e1) {
						// TODO Auto-generated catch block
						e1.printStackTrace();
					}
					jb.setText("关机");
				}
			}
		};
		
		jb.addActionListener(action);    //为按钮添加监听器
		jb2.addActionListener(action);
		jb3.addActionListener(action);
		
		this.setVisible(true);//使窗口可见
	}

	public static void main(String[] args) {
		First a=new First();
		a.initFrame();
	}

}

在这个小程序的编写中,需要注意的是:
@不用头文件的定义方式:javax.swing.JFrame f=new javax.swing.JFrame();
@位置锁定在屏幕中:f.setLocationRelativeTo(null);
@设置窗体默认程序关闭方式:f.setDefaultCloseOperation(3);//3是退出,1 是不退出
@f.setVisible()必须在所有代码之后
@设置布局(流式布局):FlowLayout fl=new FlowLayout()
f.setLayout(fl);
@弹出框:JOptionPane.showMessageDialog(f, “登陆成功!”);//f为窗口名,当使用类继承JFrame的情况下,f处为null

一些理论知识:

事情=对象(执行者)+过程(执行的流程)
编程语言的思想:
1>面向对象:关注事情的执行者是谁–>结果不确定(灵活)
2>面向过程:关注事情的执行流程是怎么样的–>结果确定(死板)

类与对象:
类: 生活中一些对象共同点的集合。(生活中没有的,主观的)
对象:生活中的一个一个的实体。(生活中有的,客观的)

构造器(构造方法):
基本格式:public 类名(参数){}
普通方法基本格式:public 返回类型 方法名(参数){}
作用:创建对象时自动调用(new xxx();)

引用传递:对象名所指的地址进行变化

垃圾清理机制:废除的空间由java的垃圾清理机制进行回收
如tea=tea1; tea所指地址发生变化,原tea所指地址遗失被回收

重载:1>方法名可以一样,参数列表必须不同(类型、个数、顺序)
2>g构造函数重载,创建一个对象只能调用一个

继承:子类继承父类所有非私有的变量及方法

方法重写:
定义:子类重写父类的方法,用于覆盖父类继承过来的函数
要求:方法名和参数、返回类型必须相同(参数不同则为重载)

自动转型: D s=new A();//仅在A类继承了D类才能自动转型
@子类可自动转型为父类,最终成为父类
@转型后的子类若调用子类中重写过的方法,则虽然它是父类,也会运行重写后的方法
@转型后的子类已经成为父类,不能调用原子类自身的方法

多态:多个同一个类型的引用,调用同一个方法,执行的流程不一致
作用:初始化对象的属性

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值