1 创建一个UI类,画出一个界面
2 在窗体上画棋盘
在paint方法中写,可参考第十一次课
设置棋盘每个格子的长和宽都是50个像素,棋盘就是一系列平行的横线和竖线
由于棋盘上的位置尺寸等信息在后面要用,这里可以将棋盘相关的参数定义为变量,写在一个接口中。
复习一下接口:第十次课中有说过,接口的属性必须是常量,默认由static final修饰。
3 设置窗体背景颜色
注意:paint方法在窗体初始化的时候自动调用,不需要单独在主函数中调用;窗体改变时也会调用,具体的改变比如:拉伸窗体大小等;
4 实现鼠标监听器
这是原本的格式,为了减少代码,可以改为继承MouseAdapter类,只要重写需要的接口类即可,不用全部重写了。
在initUI中创建监听器实现类的对象gl,将窗体的画笔传到监听器中,给窗体添加监听器
现在点击窗体的任意位置都可以画出一个黑色的实心圆,但是鼠标的位置不是圆的中点。可以在监听器中修改一下画圆的坐标
现在任意点击一个位置就能以该位置为圆心画一个实心圆
待改进:不能自动画在棋盘横竖线交叉点上
5 实现黑白棋交替
在监听器的实现类中写
待解决:拖动窗体图形不会消失——重绘
6 添加功能按钮
之前的流式布局在这里不适用,会把棋盘挡住,可以把按钮放在棋盘的旁边,这里使用空布局——可以自定义位置和尺寸
开始游戏按钮
initUI中添加按钮和设置布局
修改一下棋盘颜色尺寸
某方先下按钮
这里使用单选按钮——前面带圈,选中变实心——JRadioButton
对应复选框——前面带框,选中显示√的——JCheckBox
7 给所有的按钮添加动作监听器——监听器的联动
可以参考第九次课
首先点击“开始游戏”,然后选择黑棋先下或者白棋先下。只点击开始游戏无法开始,必须先点击开始游戏然后选择黑棋先下或者白棋先下。
bug:不点击“开始游戏”直接选择黑白棋,也可以画图