原博客:https://blog.csdn.net/cnlht/article/details/8176130
实践目标:
1.掌握JavaGUI界面设计
2.掌握鼠标事件的监听(MouseListener,MouseMotionListener)
问题:
一、找不到合适的棋盘图,改为14*14
二、获取图片:Toolkit.getDefaultToolkit().getImage(“XXX”)
img=Toolkit.getDefaultToolkit().getImage(“board1.jpg”);
三、addMouseListener();当按下、释放或单击(按下并释放)鼠标时会生成鼠标事件。鼠标光标进入或离开组件时也会生成鼠标事件。发生鼠标事件时,将调用该侦听器对象中的相应方法,并将MouseEvent 传递给该方法。
其包含五个方法:
1.public void mouseClicked(MouseEvent e) 鼠标按键在组件上单击(按下并释放)时调用。
2.public void mouseEntered(MouseEvent e) 鼠标进入到组件上时调用。
3.public void mouseExited(MouseEvent e) 鼠标离开组件时调用。
4.public void mousePressed(MouseEvent e) 鼠标按键在组件上按下时调用。
5.public void mouseReleased(MouseEvent e) 鼠标按钮在组件上释放时调用。
6.e.get(x) / e.get(y) 获取鼠标在页面的横坐标、纵坐标
addMouseListener(this);
int x1=(e.getX()-MARGIN+GRID_SPAN/2)/GRID_SPAN;
四、改变光标形状setCursor(new Cursor(Cursor.XXX));
setCursor(new Cursor(Cursor.DEFAULT_CURSOR));
setCursor(new Cursor(Cursor.HAND_CURSOR));
五、Graphics类提供基本绘图方法,主要有:画线段、画矩形、画圆、画带颜色的图形、画椭圆、画圆弧、画多边形等。
https://www.cnblogs.com/donghb/p/7637990.html
- 不知道PaintComponent(Graphic g)具体什么用,但是注释掉后会出现两个重叠网格,无法悔棋,重新开始后上一盘不会清零
Graphics g
super.paintComponent(g);
//
g.drawImage(img, x, y, null);
//
g.drawLine(MARGIN, MARGIN+iGRID_SPAN, MARGIN+COLSGRID_SPAN, MARGIN+i*GRID_SPAN);
六、比Graphic更加具立体感Graphics2D
反思
基本上第一次读略长的代码,一开始没找到主干,应该从实现逻辑开始读,再看GUI及其美化
可以添加更多功能:如,棋盘大小选择
Syntax error on token “;”, , expected //将此代码行放在方法体中
用到了匿名内部类:不用给内部类命名 此题中的匿名内部类 还不用调用对象
for(元素类型t 元素变量x : 遍历对象obj){
引用了x的java语句;
}
//遍历chessList
for(Point c:chessList){
if(c!=null&&c.getX()==x&&c.getY()==y)
return true;
}