Java初学笔记21-【Java绘图坐标体系、像素、Graphics 类、Java事件处理机制、坦克项目02部分代码】

一、Java绘图坐标体系

1. 坐标体系

下图说明了Java坐标系。坐标原点位于左上角,以像素为单位。在Java坐标系中,第一个是x坐标,表示当前位置为水平方向,距离坐标原点x个像素;第二个是y坐标,表示当前位置为垂直方向,距离坐标原点y个像素。
【Java绘图坐标体系】
在这里插入图片描述

2. 像素

计算机在屏幕上显示的内容都是由屏幕上的每一个像素组成的。例如,计算机显示器的分辨率是800×600,表示计算机屏幕上的每一行由800个点组成,共有600行,整个计算机屏幕共有480000个像素。像素是一个密度单位,而厘米是长度单位,两者无法比较比较。

3. 快速入门案例

在这里插入图片描述
在这里插入图片描述

4. 绘图原理

(1)在以下情况paint()将会被调用:

【1】当组件第一次在屏幕显示的时候,程序会自动的调用paint()方法来绘制组件
【2】窗口最小化,再最大化
【3】窗口的大小发生变化

(2)Component类提供了paint、repaint:

【1】paint(Graphics g)绘制组件的外观
【2】repaint()刷新组件的外观。

5. Graphics 类

(1)Graphics类可以理解就是画笔

为我们提供了各种绘制图形的方法:[参考jdk帮助文档

(2)画直线drawLine(int x1,int y1,int x2,int y2)

(3)画矩形边框drawRect(int x, int y. int width, int height)

(4)画椭圆边框drawOval(int x, int y, int width, int height)

(5)填充矩形 fillRect(int x, int y, int width, int height)

【1】需要先设置画笔颜色setColor(Color c)
【2】再绘制矩形。

(6)填充椭圆fillOval(int x, int y, int width, int height)

【1】需要先设置画笔颜色setColor(Color c)
【2】再绘制椭圆。

(7)画图片drawlmage(Image img, int x, int y, …)

【1】先获取图片资源
Image image = Toolkit.getDefaultToolkit().getImage(Panel.class.getResource("/BG.png"));
【2】再画图片drawlmage

(8)画字符串(写字)drawString(String str, int x, int y)

【1】需要先设置画笔颜色setColor(Color c)
【2】再设置画笔的字体setFont(Font font)
【3】再drawString(String str, int x, int y),这里的x,y是左下角

(9)设置画笔的字体setFont(Font font)

其中包括:隶书、粗体、大小

(10)设置画笔的颜色setColor(Color c)

二、Java事件处理机制

  1. KeyListener接口----监听器
  2. 可以监听键盘事件,在画板中加入监听键盘的对象

3. keyTyped(KeyEvent e)

有字符输出时,该方法就会触发

4. keyPressed(KeyEvent e)

当某个键按下,该方法会触发

5. keyReleased(KeyEvent e)

当某个键释放(松开),该方法会触发

  1. java事件处理是采取"委派事件模型"。当事件发生时,产生事件的对象,会把此"信息”传递给"事件的监听者"处理,这里所说的"信息"实际上就是 java.awt.event事件类库里某个类所创建的对象,把它称为"事件的对象"。
    【事件处理机制图】

7. 事件监听器接口:KeyListener

(1)当事件源产生一个事件,可以传送给事件监听者处理
(2)事件监听者实际上就是一个类, 该类实现了某个事件监听器接口。比如前面案例中的MyPanle就是一个类,它实现了KeyListener接口,它就可以作为-一个事件监听者,对接受到的事件进行处理
(3)事件监听器接口有多种,不同的事件监听器接口可以监听不同的事件,一个类可以实现多个不同种类的监听接口
(4)这些接口在java.awt.event包和javax.swing.event包中定义。
(5)事件类型
【事件类型】
在这里插入图片描述

三、坦克项目02

  1. 画敌人坦克
    (1)因为敌人的坦克,是在MyPanel上,所以我们的代码在MyPanel
    (2)因为敌人的坦克,后面有自己特殊的属性和方法,可以单开一个EnemyTank
    (3)敌人坦克数量多,可以放入到集合Vector,因为考虑多线程问题

  2. 部分代码
    坦克模型
    在这里插入图片描述

  3. Tank
    在这里插入图片描述

  4. MyTank
    在这里插入图片描述

  5. EnemyTank
    在这里插入图片描述

  6. TankPanel
    在这里插入图片描述

  7. TankGame02
    在这里插入图片描述

  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
1.Java的源代码中定义几个,编译结果就生成几个以.class为后缀的字节码文件.( √ ) 2.Java程序里,创建新的对象用关键字new,回收无用的对象使用关键字free. ( × ) 3.Java有垃圾回收机制,内存回收程序可在指定的时间释放内存对象. ( × ) 4.构造函数用于创建的实例对象,构造函数名应与名相同,返回型为void. ( × ) 5.在异常处理中,若try中的代码可能产生多种异常则可以对应多个catch语句,若catch中的参数型有父关系,此时应该将父放在后面,子放在前面. ( √ ) 6.拥有abstract方法的是抽象,但抽象中可以没有abstract方法. ( √ ) 7.Java的屏幕坐标是以像素为单位,容器的左下角被确定为坐标的起点. ( × ) 8.静态初始化器是在其所属的加载内存时由系统自动调用执行. ( √ ) 9.在Java中对象可以赋值,只要使用赋值号(等号)即可,相当于生成了一个各属性与赋值对象相同的新对象. ( × ) 10.只能利用Thread的子来创建线程. ( × ) 1.按以下要求编写程序 (1) 创建一个Rectangle,添加width和height两个成员变量. (2) 在Rectangle中添加两种方法分别计算矩形的周长和面积. (3) 编程利用Rectangle输出一个矩形的周长和面积. 3.编写一个程序:在控制台中窗口中提示输入两个整数,然后接收这两个整数,并输出它们的和.下面是运行过程的示例: 请输入第一个整数:45 请输入第二个整数:23 计算结果:45+23=68.

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爱吃凉拌辣芒果

不断学习,不断进步,共勉~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值