在纵横线的交点处画棋子
见标题,这是一个数学题了,不过能够做出来还蛮有成就感的了!
paint()方法和paintComponent()方法的区别
一般来说当你想在AWT组件上进行绘制时,你可以重新实现paint函数,像我们在Applet Canvas上绘制需要实现paint函数
如果想在Swing组件上进行绘制,我们往往重新实现paintComponent方法(这个方法AWT组件没有),在需要刷新的时候系统会调用paint函数
paint函数内部又调用paintComponent函数(paint内部一共会调三个,还有一个负责边框绘制)
首先是画棋盘了
/**
* 在这个面板上画一个五子棋的棋盘了
*/
public void paintComponent(Graphics g) {
//先画横线
for(int i = 40;i <= 400;i += 20) {
g.drawLine(40, i, 400, i);
}
//划竖线
for(int j = 40;j <= 400;j += 20) {
g.drawLine(j, 40, j, 400);
}
//再划棋盘上的五个特殊点
g.fillRect(97, 97, 6, 6);
g.fillRect(337,97,6,6);
g.fillRect(97, 337, 6, 6);
g.fillRect(337, 337, 6, 6); 这些数字都是要算出来的,可以找一些好计算的面板尺寸了
g.fillRect(217, 217, 6, 6);
}
将黑白棋子写成两个内部类饿了,得填充一个椭圆,看上去就像一个棋子一样了e
/**
* 白棋子内部类
* @author sornor
* @version 1.0
*/
class Chess_white extends Canvas{
public Chess_white () {
this.setSize(20,20);
}
public void paint(Graphics g) {
g.setColor(Color.white);
System.out.println("white");
g.fillOval(0, 0, 14, 14); //填充一个椭圆了
}
}
正式画棋子了
2011-05-29 16:24:15