Java中绘制基本图形,可以使用Java类库中的Graphics类,此类位于java.awt包中。在我们自己的java程序文件中,要使用Graphics类就需要使用import java.awt.Graphics语句将Graphics类导入进来。

Graphics类提供基本的几何图形绘制方法,主要有:画线段、画矩形、画圆、画带颜色的图形、画椭圆、画圆弧、画多边形等。本项目仅用到画直线的功能,其它图形绘制请自行点击查阅Java API。

Graphics类的drawLine()方法:drawLine(int x1,int y1,int x2,int y2)

此方法的功能是:在此图形上下文的坐标系中,使用当前颜色在点 (x1,y1) 和 (x2,y2)之间画一条线。

这里需要理解几个概念:

1)、图形上下文:通俗点讲,就是画图环境。每个窗口构件(如主窗口、按钮等),都有一个自己的图形上下文对象,我们就是使用这个对象来实现在构件上画图。这个对象就是Graphics对象。

2)、如何获得图形上下文:我们要在哪个构件上绘图,就调用那个构件的getGraphics()方法即可获得该构件的图形上下文对象,然后使用这个对象绘图。

3)、Java坐标系:

Java的坐标原点(0,0)位于屏幕的左上角,坐标度量以象素为单位,水平向右为X轴的正方向,竖直向下为Y轴的正方向,每个坐标点的值表示屏幕上的一个像素点的位置,所有坐标点的值都取整数,如下图所示:

4)、当前颜色:指图形上下文当前的颜色。每个图形上下文都有自己当前的颜色。通过Graphics对象的getColor()方法可获取改颜色,setColor()方法可设置颜色。

示例如下:

第一步:给DrawSee类添加成员变量,用来描述游戏区域的特征。

对DrawSee类来说,此类主要完成的功能是与用户交互,即显示游戏区域,显示数字,响应用户鼠标点击,显示用户鼠标点击后的结果等。我们现在考虑绘制10行10列游戏区域的问题。先给DrawSee类添加如下四个成员变量:import java.awt.Color;

import java.awt.Container;

import java.awt.Font;

import java.awt.Graphics;

import java.awt.event.MouseAdapter;

import java.awt.event.MouseEvent;

import javax.swing.JFrame;

public class DrawSee extends JFrame {

private static final int sx = 50;//游戏区域10*10方块的起始横坐标

private static final int sy = 50;//游戏区域10*10方块的起始纵坐标

private static final int w = 40;//每个小方格的边长

private static final int rw = 400;//游戏区域10*10方块的边长

...

}

第二步:添加绘制游戏区域的方法(即绘制10行10列的红色网格)public void paintComponents(Graphics g) {

try {

// 设置线条颜色为红色

g.setColor(Color.RED);

// 绘制外层矩形框

g.drawRect(sx, sy, rw, rw);

/* 绘制水平10个,垂直10个方格。

* 即水平方向9条线,垂直方向9条线,

* 外围四周4条线已经画过了,不需要再画。

* 同时内部64个方格填写数字。

*/

for(int i = 1; i < 10; i ++) {

// 绘制第i条竖直线

g.drawLine(sx + (i * w), sy, sx + (i * w), sy + rw);

// 绘制第i条水平线

g.drawLine(sx, sy + (i * w), sx + rw, sy + (i * w));

}

} catch (Exception e) {

e.printStackTrace();

}

}

总结:import java.awt.Color;

import java.awt.Container;

import java.awt.Font;

import java.awt.Graphics;

import java.awt.event.MouseAdapter;

import java.awt.event.MouseEvent;

import javax.swing.JFrame;

/**

*

* 程序入口

*

*/

public class TestDrawLine {

public static void main(String[] args) {

new DrawSee();

}

}

class DrawSee extends JFrame {

private static final int sx = 50;//小方格宽度

private static final int sy = 50;//小方格高度

private static final int w = 40;

private static final int rw = 400;

private Graphics jg;

private Color rectColor = new Color(0xf5f5f5);

/**

* DrawSee构造方法

*/

public DrawSee() {

Container p = getContentPane();

setBounds(100, 100, 500, 500);

setVisible(true);

p.setBackground(rectColor);

setLayout(null);

setResizable(false);

this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

try {

Thread.sleep(500);

} catch (Exception e) {

e.printStackTrace();

}

// 获取专门用于在窗口界面上绘图的对象

jg = this.getGraphics();

// 绘制游戏区域

paintComponents(jg);

}

public void paintComponents(Graphics g) {

try {

// 设置线条颜色为红色

g.setColor(Color.RED);

// 绘制外层矩形框

g.drawRect(sx, sy, rw, rw);

/* 绘制水平10个,垂直10个方格。

* 即水平方向9条线,垂直方向9条线,

* 外围四周4条线已经画过了,不需要再画。

* 同时内部64个方格填写数字。

*/

for(int i = 1; i < 10; i ++) {

// 绘制第i条竖直线

g.drawLine(sx + (i * w), sy, sx + (i * w), sy + rw);

// 绘制第i条水平线

g.drawLine(sx, sy + (i * w), sx + rw, sy + (i * w));

// 填写第i行从第1个方格到第8个方格里面的数字(方格序号从0开始)

for(int j = 0; j < 10; j ++) {

//drawString(g, j, i);

}

}

} catch (Exception e) {

e.printStackTrace();

}

}

}

结果如图:

java绘制图形_java怎么绘制简单图形相关推荐

  1. java画雪花_java分形绘制科赫雪花曲线(科赫曲线)代码分享

    首先我们举个例子: 我们可以看到西兰花一小簇是整个花簇的一个分支,而在不同尺度下它们具有自相似的外形.换句话说,较小的分支通过放大适当的比例后可以得到一个与整体几乎完全一致的花簇.因此我们可以说西兰花 ...

  2. java swing 一闪而过_Java代码,为什么图形会一闪而过,怎么修改?

    //未完成:会一闪而过importjava.awt.*;importjava.awt.event.*;importjavax.swing.*;importjava.awt.geom.*;publicc ...

  3. java 画树_java – 如何绘制代表连接节点图的树?

    我想在Java GUI中显示树,但我不知道如何.树代表连接节点的图形,如下所示: 我应该说我有自己的树类: public class BinaryTree { private BinaryNode r ...

  4. java 画树_java – 如何绘制代表连接节点图的树?

    我想在 Java GUI中显示树,但我不知道如何.树代表连接节点的图形,如下所示: 我应该说我有自己的树类: public class BinaryTree { private BinaryNode ...

  5. 使用java绘图类绘制圆圈_java – 递归绘制圆圈

    我想画这个: public void drawCircle(int x, int y, int diameter, int it) { int d = diameter / 3; if (it == ...

  6. java 画树_java Graphics 绘制树形图,保存图片

    最近项目中要做报告,生成树形图显示父子关系,网上没找到合适的工具,所以用Graphics画了个简单的. 很简单直接上代码吧. import javax.imageio.ImageIO; import ...

  7. java swing 总结_java实验之swing图形用户界面程序设计及总结

    8.1组件和容器 顶层容器有小应用程序(Applet和JApplet).对话框(Dialog和JDialog).框架(Frame和JFrame).这些容器都存在于java.swing*;中. 一般容器 ...

  8. 原python最简单的图形编程_Python(简单图形和文件处理)编程

    Python确实是一门很简洁而且功能有强大的语言,我觉得开始学习很容易理解,说到熟练和精通还是不容易的,还需不断学习. 从最基础的语法学习,有些部分各种语言是相同的,让人很好理解.编程也是从最简单语法 ...

  9. java 多线程 动画_Java多线程实现简单动画(小球运动)效果

    Ŀ¼ 首先,严格按照操作系统理论来说,多线程并没有实现真正的同时进行.而是CPU将工作时间分成很多很短的时间片(Time slicing),每个时刻只能执行一个线程. 主要有两种方式实现多线程,一种是 ...

  10. java小知识_java小知识点简单回顾

    1.java的数据类型分为两种:简单类型和引用类型(数组.类以及接口).注意,java没有指针的说法,只有引用.简单类型的变量被声明时,存储空间也同时被分配:而引用类型声明变量(对象)时,仅仅为其分配 ...

最新文章

  1. 如何用DiscoGAN学习发现跨域关系(附源代码)
  2. linux进程源码分析,Linux内核源代码分析——口述程序猿如何意淫进程(一)
  3. 安装 android studio创建工程运行报错 -- 常见的三个问题
  4. javascript 强制类型转换
  5. 拥抱.NET 5,从自研微服务框架开始
  6. 响应式布局(手机端)
  7. Java 注解:@PostConstruct和@PreConstruct
  8. csv文件转换成html,jQuery 把CSV文件数据转换为HTML表格(Bootstrap Table)
  9. 朋友圈设置成昨天发的_如何让你的朋友圈骚到脱颖而出?
  10. 特斯拉11月份售出52859辆国产汽车 同比增长145%
  11. 【转】echarts x轴标签文字过多导致显示不全
  12. STM32——新建 Keil MDK 5 工程(寄存器版本)
  13. linux 下令chmod 755的意思
  14. 如何自动生成目录,并设置目录格式(一看就懂)
  15. 区块链交易正规平台有哪些?哪个区块链交易平台正规?
  16. 推荐机制 协同过滤和基于内容推荐的区别
  17. Halcon 单目标定,畸变矫正,图像坐标系转世界坐标系
  18. 红米5双清_红米5刷recovery教程_红米5第三方中文recovery下载
  19. 让Facebook和Google自叹不如,新算法无人机战胜人类专家……
  20. 微机原理复试面试(一)

热门文章

  1. 码流 / 码率 / 比特率 / 帧速率 / 分辨率 / 高清的区别
  2. 计算机休眠下睡眠的不同点是什么,电脑休眠和睡眠的区别
  3. 求最大值 最小值 下标 及格率 c语言,输入某班的C语言成绩,计算输出其及格率...
  4. 怎样做风险评估?风险评估有哪些具体实施流程?
  5. 圆的半径java_计算圆的半径
  6. A. One-dimensional Japanese Crossword
  7. 阿里云携手开源中国众包平台发布百万悬赏项目
  8. linux wine乱码,解决wine中文乱码的问题
  9. java中文转英文_eclipse英文转中文怎么设置 eclipse中英文切换图文教程
  10. 闵行区电动自行车上牌地址