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

第二步:代码区

DrawChessBoard类:

 package com.hp.chenyanlong;

 import java.awt.Graphics;
import java.awt.Image;
import java.awt.Toolkit; import javax.swing.JPanel; /**
* 类说明 :DrawChessBoard 类
* @author 作者 : chenyanlong
* @version 创建时间:2017年10月27日
*/
public class DrawChessBoard extends JPanel { public Image boardImg;//抽象类 Image 是表示图形图像的所有类的超类。 //载入图片
public DrawChessBoard() { boardImg = Toolkit.getDefaultToolkit().getImage("res/drawable/chessboard.png");//获取图片
if (boardImg == null) {
System.out.println("png do not exit");
}
} //重写
@Override
protected void paintComponent(Graphics g){ super.paintComponent(g); int imgWidth=boardImg.getWidth(this);//图片的宽度
int imgHeight=boardImg.getHeight(this);//图片的高度 int FWidth=getWidth();//容器的宽度
int FHeight=getHeight();//容器的高度 int x=(FWidth-imgWidth)/2;
int y=(FHeight-imgHeight)/2;
g.drawImage(boardImg,x,y,null);//画出图片
}
}

Main类:

 package com.hp.chenyanlong;
import java.awt.Container;
import javax.swing.JFrame; import com.hp.chenyanlong.DrawChessBoard;
/**
* 类说明 :Main
* @author 作者 : chenyanlong
* @version 创建时间:2017年10月27日
*/
public class Main extends JFrame { private DrawChessBoard drawChessBoard;//设置私有话drawChessBoard //构造方法
public Main() {
//实例化对象DrawChessBoard
drawChessBoard = new DrawChessBoard(); //Frame标题
setTitle("五子棋--@yanlong"); //加入到容器中
Container containerPane =getContentPane();
containerPane.add(drawChessBoard); //将drawChessBoard组件添加到容器
} //主方法
public static void main(String[] args) {
Main m = new Main();
m.setVisible(true);
} }

第三步:运行效果

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

重新写了DrawChessBoard代码:

 package com.hp.chenyanlong;

 import java.awt.Graphics;
import java.awt.Image;
import java.awt.Toolkit; import javax.swing.JPanel; /**
* 类说明 :DrawChessBoard 类
* @author 作者 : chenyanlong
* @version 创建时间:2017年10月27日
*/
public class DrawChessBoard extends JPanel { public Image boardImg;//抽象类 Image 是表示图形图像的所有类的超类。
final private int ROWS=19;//设置19行 //载入图片
public DrawChessBoard() { boardImg = Toolkit.getDefaultToolkit().getImage("res/drawable/chessboard.png");//获取图片
if (boardImg == null) {
System.out.println("png do not exit");
}
} //重写
@Override
protected void paintComponent(Graphics g){ super.paintComponent(g); int imgWidth=boardImg.getWidth(this);//图片的宽度
int imgHeight=boardImg.getHeight(this);//图片的高度 int FWidth=getWidth();//容器的宽度
int FHeight=getHeight();//容器的高度 int x=(FWidth-imgWidth)/2;
int y=(FHeight-imgHeight)/2;
g.drawImage(boardImg,x,y,null);//画出图片 int margin=x;
int span_x=imgWidth/ROWS;//单元格的宽度
int span_y=imgHeight/ROWS;//单元格的高度
//画横线
for(int i=0;i<ROWS;i++){
g.drawLine(x, y+i*span_y,FWidth-x,y+i*span_y);
}
//画竖线
for(int i=0;i<ROWS;i++)
{
g.drawLine(x+i*span_x, y, x+i*span_x,FHeight-y);
}
}
}

第五步:运行效果

java生成棋盘的更多相关文章

  1. 设计一个自动生成棋盘格子的JS小程序

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  2. Java生成和操作Excel文件(转载)

    Java生成和操作Excel文件   JAVA EXCEL API:是一开放源码项目,通过它Java开发人员可以读取Excel文件的内容.创建新的Excel文件.更新已经存在的Excel文件.使用该A ...

  3. 利用JAVA生成二维码

    本文章整理于慕课网的学习视频<JAVA生成二维码>,如果想看视频内容请移步慕课网. 维基百科上对于二维码的解释. 二维条码是指在一维条码的基础上扩展出另一维具有可读性的条码,使用黑白矩形图 ...

  4. Java生成验证码原理(jsp)

     验证码的作用: 验证码是Completely Automated Public Turing test to tell Computers and Humans Apart(全自动区分计算机和人类的 ...

  5. JAVA生成条形码

    1.下载生成条形码所需要的jar包barcode4j.jar: 2.java生成条形码代码 import java.awt.image.BufferedImage;import java.io.Fil ...

  6. Java生成CSV文件实例详解

    本文实例主要讲述了Java生成CSV文件的方法,具体实现步骤如下: 1.新建CSVUtils.java文件: package com.saicfc.pmpf.internal.manage.utils ...

  7. java 生成8位数字作为UID

    java 生成8位数字作为UUID: /*** * 生成uid 8位数字 */public static String generateUID(){ Random random = new Rando ...

  8. java生成随机序列号

    1.java生成随机序列号 String deleteUuid = UUID.randomUUID().toString(); 引用Jar包 //java-uuid-generator-3.1.3.j ...

  9. java生成简单Excel工作薄

    前言: 代码都是建立在实际需求上的,上周做完一个调外部电影券接口的项目,这周产品又要excel表格,大致内容为:券所属影院.图片URL.等信息制作为excel表格,把每次同步过来的数据给他分析. jx ...

随机推荐

  1. Codeforces 950D A Leapfrog in the Array (思维)

    题目链接:A Leapfrog in the Array 题意:给出1-n的n个数,从小到大每隔一个位置放一个数.现在从大到小把数往前移动,每次把最右边的数移动最靠右边的空格处直到n个数都在前n个位置 ...

  2. cocos2d-x学习记录4——图形绘制

    重写CCNode的draw函数能够绘制出各种基本图形,如点.直线.多边形.园.贝塞尔曲线等,同时还可以设置绘制的颜色和宽度. MyScene的draw函数 void MyScene::draw() { ...

  3. vue 监听页面宽度变化 和 键盘事件

    vue 监听页面窗口大小 export default { name: 'Full', components: { Header, Siderbar }, data () { return { scr ...

  4. it面试技巧

    一:请你自我介绍一下你自己? 回答提示:一般人回答这个问题过于平常,只说姓名.年龄.爱好.工作经验,这些在简历上都有.其实,企业最希望知道的是求职者能否胜任工作,包括:最强的技能.最深入研究的知识领域 ...

  5. SSIS 你真的了解事务吗?

    事务用于处理数据的一致性,事务的定义是,处于同一个事务中的操作是一个工作单元,要么全部执行成功,要么全部执行失败.把事务的概念应用到在实际的SSIS Package场景中,如何在Package中实现事 ...

  6. C#_父窗体跟子窗体的控件操作

    很多人都苦恼于如何在子窗体中操作主窗体上的控件,或者在主窗体中操作子窗体上的控件.相比较而言,后面稍微简单一些,只要在主窗体中创建子窗体的时候,保留所创建子窗体对象即可. 下面重点介绍前一种,目前常见 ...

  7. thinkphp3.2 批量添加数据

    这是我遇到的thinkphp3.2 当中最让我无语的坑 批量添加数据有个方法是 addAll() 这个方法一定要注意数组的键名,一定要整齐!!! 可以在存入数据前,用ksort()方法将数组的键名排序 ...

  8. Vue.js 相关知识(路由)

    1. 简介 路由,工作原理与路由器相似(路由器将网线总线的IP分发到每一台设备上),Vue中的路由根据用户在网页中的点击,将其引导到对应的页面. 2. 使用步骤 安装vue-router或者直接引入v ...

  9. Linux内核分析——第一周学习笔记20135308

    第一周 计算机是如何工作的 第一节 存储程序计算机工作模型 1.冯·诺依曼结构模型:冯·诺依曼结构也称普林斯顿结构,是一种将程序指令存储器和数据存储器合并在一起的存储器结构.程序指令存储地址和数据存储 ...

  10. 第二章:蓝色巨人 IBM公司

    COBOL(面向商业的通用语言) DEC(数字设备公司)华生实验室 造成失败的原因: 1,没有经营终端消费型产品 2,技术的流失 3.没有在意对手 成为的方法:合并,保守,谨慎 研究员的工作: 1,发 ...