第一步:新建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. C#Unit单元测试之读取Web.config文件

    长期一来,我们所完成的项目都没有写单元测试,今天我一时兴起,决定给自己写的代码写单元测试,简单的测试代码分分钟完成了,一运行测试,就懵逼了.没能达到我的预期效果,而是出现图1所示错误. 图1:单元测试 ...

  2. Accer 4752G添加固态硬盘 双系统

    (此文一直在草稿箱里躺了一年,略作修改后发布~) 背景:电脑是2011年年末买的,用到现在也已经5年多了,好在没坏过什么硬件,有过2年疯狂打LOL的经历,之后电脑就打不动了,FPS始终上不去,启动游戏 ...

  3. unity音量设置(同时设置到多个物体上)——引伸语言设置

    在游戏中游戏设置是一个很重要的功能,但是比如语言设置和音量设置分散在很多个物体的组件上,如果每个对应的物体都放到一个链表里,会导致程序雍总难堪,使用事件调用是最好的方式 音量存储类 SoundMana ...

  4. cocos2d-x学习之路(二)——分析AppDelegate和HelloWorldScene文件

    这里我们来看一下cocos自动给我们生成的工程里有些什么东西,并且分析一下这些代码的用途,来为我们以后编写cocos程序铺下基础. 这里我建议看我这份随笔的看官先看看cocos官网的快速入门手册,不然 ...

  5. 复习下VLAN的知识

    转载:来自百度百科 VLAN一般指虚拟局域网 VLAN(Virtual Local Area Network)的中文名为"虚拟局域网". 虚拟局域网(VLAN)是一组逻辑上的设备和 ...

  6. 微软职位内部推荐-Software Engineer II-Search

    微软近期Open的职位: Do you want to work on a fast-cycle, high visibility, hardcore search team with ambitio ...

  7. Notes of Daily Scrum Meeting(12.3)

    这个月大家的课业任务很重啊,加上软工有三个课程设计要完成了,感觉亚历山大的说,而且我们alpha阶段完成度低一些, 所以任务更多了,今天做的东西就不多,希望大家加油吧! 团队成员 今日团队工作 陈少杰 ...

  8. 【SE】Week7 : Silver Bullet & Cathedral and Bazaar & Big Ball of Mud & Waterfall ...

    1. Silver Bullet No Silver Bullet: Essence and Accidents of Software Engineering —— 无银弹理论,出自于美国1999年 ...

  9. Linux内核分析 笔记四 系统调用的三个层次 ——by王玥

    一.知识点总结 (一)用户态.内核态和中断 1.内核态:在高的执行级别下,代码可以执行特权指令,访问任意的物理地址,这时的CPU就对应内核态 2.用户态:在低级别的指令状态下,代码 只能在级别允许的特 ...

  10. C++:继承访问属性(public/protected/private)

    • 公有继承(public) 公有继承在C++中是最常用的一种继承方式,我们先来看一个示例: #include<iostream> using namespace std; class F ...