zoukankan      html  css  js  c++  java
  • Document

    第一步:新建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 }

    第三步:运行效果

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

    重新写了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 }

     第五步:运行效果

  • 相关阅读:
    围炉夜话(14)
    围炉夜话(13)
    ATmega128中应用的hex与bootloader的hex合并的实现
    配置IAR for AVR 既可以仿真也可以生成Hex文件
    atmega128 bootloader程序在IAR-AVR下 linker文件的配置及原因
    一步步学习SPD2010--第十四章节--在Web页面使用控件(8)--关键点
    一步步学习SPD2010--第十四章节--在Web页面使用控件(7)--使用SP服务器控件
    一步步学习SPD2010--第十四章节--在Web页面使用控件(6)--测试ASP.NET表单
    一步步学习SPD2010--第十四章节--在Web页面使用控件(4)--使用ASP.NET验证控件
    一步步学习SPD2010--第十四章节--在Web页面使用控件(3)--验证用户数据输入
  • 原文地址:https://www.cnblogs.com/chenyanlong/p/7737261.html
Copyright © 2011-2022 走看看