本次课程主要讲了一个小型电脑操作窗口的设计以及实现,下面首先进行成果展示:
当点击图示“关机”按钮时,“关机”按钮会变成“取消关机”,电脑将会在10000秒后关机,点击“取消关机”,则可以取消操作。“重启”按钮效果在10000秒后关机重启。
若点击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类才能自动转型
@子类可自动转型为父类,最终成为父类
@转型后的子类若调用子类中重写过的方法,则虽然它是父类,也会运行重写后的方法
@转型后的子类已经成为父类,不能调用原子类自身的方法
多态:多个同一个类型的引用,调用同一个方法,执行的流程不一致
作用:初始化对象的属性