天天看点

java生成棋盘

第一步:新建java项目,具体的命名,看下面的文件结构。

java生成棋盘

第二步:代码区

DrawChessBoard类:

1 package com.hp.chenyanlong;
 2 
 3 import java.awt.Graphics;
 4 import java.awt.Image;
 5 import java.awt.Toolkit;
 6 
 7 import javax.swing.JPanel;
 8 
 9 /**
10  * 类说明 :DrawChessBoard 类
11  * @author 作者 : chenyanlong
12  * @version 创建时间:2017年10月27日
13  */
14 public class DrawChessBoard extends JPanel {
15 
16     public Image boardImg;//抽象类 Image 是表示图形图像的所有类的超类。
17 
18     //载入图片
19     public DrawChessBoard() {
20 
21         boardImg = Toolkit.getDefaultToolkit().getImage("res/drawable/chessboard.png");//获取图片
22         if (boardImg == null) {
23             System.out.println("png do not exit");
24         }
25     }
26     
27     //重写
28     @Override
29     protected void paintComponent(Graphics g){
30         
31         super.paintComponent(g);
32         
33         int  imgWidth=boardImg.getWidth(this);//图片的宽度
34         int  imgHeight=boardImg.getHeight(this);//图片的高度
35         
36         int FWidth=getWidth();//容器的宽度
37         int FHeight=getHeight();//容器的高度
38         
39         int x=(FWidth-imgWidth)/2;
40         int y=(FHeight-imgHeight)/2;
41         g.drawImage(boardImg,x,y,null);//画出图片
42     }
43 }      

Main类:

1 package com.hp.chenyanlong;
 2 import java.awt.Container;  
 3 import javax.swing.JFrame;
 4 
 5 import com.hp.chenyanlong.DrawChessBoard;  
 6 /** 
 7 * 类说明 :Main
 8 * @author 作者 : chenyanlong 
 9 * @version 创建时间:2017年10月27日 
10 */
11 public class Main extends JFrame {
12 
13         private DrawChessBoard drawChessBoard;//设置私有话drawChessBoard
14      
15         //构造方法
16         public Main() { 
17             //实例化对象DrawChessBoard
18             drawChessBoard = new DrawChessBoard();  
19               
20             //Frame标题  
21             setTitle("五子棋--@yanlong");  
22             
23             //加入到容器中
24             Container containerPane =getContentPane();  
25             containerPane.add(drawChessBoard); //将drawChessBoard组件添加到容器     
26         }  
27         
28         //主方法
29         public static void main(String[] args) {  
30             Main m = new Main();  
31             m.setVisible(true);  
32         }  
33     
34 }      

第三步:运行效果

java生成棋盘

 第四步:为棋盘画上横竖线

重新写了DrawChessBoard代码:

1 package com.hp.chenyanlong;
 2 
 3 import java.awt.Graphics;
 4 import java.awt.Image;
 5 import java.awt.Toolkit;
 6 
 7 import javax.swing.JPanel;
 8 
 9 /**
10  * 类说明 :DrawChessBoard 类
11  * @author 作者 : chenyanlong
12  * @version 创建时间:2017年10月27日
13  */
14 public class DrawChessBoard extends JPanel {
15 
16     public Image boardImg;//抽象类 Image 是表示图形图像的所有类的超类。
17     final private int ROWS=19;//设置19行
18 
19     //载入图片
20     public DrawChessBoard() {
21 
22         boardImg = Toolkit.getDefaultToolkit().getImage("res/drawable/chessboard.png");//获取图片
23         if (boardImg == null) {
24             System.out.println("png do not exit");
25         }
26     }
27     
28     //重写
29     @Override
30     protected void paintComponent(Graphics g){
31         
32         super.paintComponent(g);
33         
34         int  imgWidth=boardImg.getWidth(this);//图片的宽度        
35         int  imgHeight=boardImg.getHeight(this);//图片的高度
36         
37         int FWidth=getWidth();//容器的宽度
38         int FHeight=getHeight();//容器的高度
39         
40         int x=(FWidth-imgWidth)/2;
41         int y=(FHeight-imgHeight)/2;
42         g.drawImage(boardImg,x,y,null);//画出图片
43         
44         int margin=x;
45         int span_x=imgWidth/ROWS;//单元格的宽度
46         int span_y=imgHeight/ROWS;//单元格的高度
47         //画横线
48         for(int i=0;i<ROWS;i++){
49             g.drawLine(x, y+i*span_y,FWidth-x,y+i*span_y);
50         }
51          //画竖线  
52         for(int i=0;i<ROWS;i++)  
53         {  
54             g.drawLine(x+i*span_x, y, x+i*span_x,FHeight-y);  
55         }  
56     }
57 }      

 第五步:运行效果