b) 为什么要使用swing,而不使用awt
它提供了AWT 所能够提供的所有功能,并且用纯粹的Java代码对AWT 的功能进行了大幅度的扩充。
c) 所有的图形界面都是从哪一个类继承的?
Object类
d) 事件步骤
1. 确定事件源;
2. 给事件源设置好条件,设置好捕获事件的条件;
3. 创建一个处理事件的类,再实例化类的对象;
4. 结束;
e) 常用的监听器
鼠标监听器(继承自MouseAdapter类)
ActionListener类
f) ActionEvent和MouseEvent
ActionEvent为语义类事件,而MouseEvent为低层事件
5. 数组和队列
a) 数组
数组是一种线性的数据结构
操作数组是通过什么?
数组下标
多维数组
是一维数组的拓展
获取行的总数格式? array.length
获取列的总数格式? array[i].length
数组的缺点?数组中只能存储一种类型的数据;
数组的长度是固定的,如果发生追加或者删除长度的时候无法实现
b) 队列: 定义一个类,用该类来封装对数组的操作。
数组可以使用Object来实例化。
队列只能存储一种数据类型。
但是java提供了一个叫做泛型的概念, E可以表示java所有类,然后E结合类一起使用就可以储存不同类型的数组元素;
6. 重绘
1. 要有一个队列来储存获过的对象
2. 要有一个画图形的类,每画一次就加到队列中
3. 调用父类的paint方法,然后通过循环队列里储存的画图类,每次都重绘一次
7. 五子棋
一、界面
五子棋界面窗体:设置好窗体属性;并显示窗体
在显示界面的时候就需要有一个棋盘,并且棋盘要一直在窗体上存在。
15*15格子的棋盘。每一个格子的大小40个像素,每一颗棋子的大小是30像素
用数组来对应所下的棋子
二、输赢算法:
同色棋子在“米字”方向上有连接超过5个则该色棋子赢了;
三、人机,判断机器下的子:
根据棋子在棋盘上的相连排列,分为8种(或更多);
有一连活(表示只有一个棋子相连,周围8面都是活路),一连半(表示一个棋子相连,一面被异色棋子堵住,一条线只能下一边),相似还有二连活、二连半、三连活、三连半、四连活、四连半;将这些位置设置为不同的权值,一个棋子周围就有不同的权值,所有棋子的权值表累加在一起,判断权值最大的地方就是落子的地方
四、重绘:每下一个棋子都放入队列中,然后与窗体一起重绘