第16章 坦克大战
Java 坐标体系
- 坐标一个值就是一个像素
- 像素是密度单位 而不是长度单位
Java 绘图
-
建立的画图的类需要继承 JPanel 类 (画板,面板)
-
重写 JPanel 的 paint 方法引入参数Graphics(画笔)
-
Graphics提供绘图方法
- super.paint(调用父类方法完成初始化)
- darwOral(画椭圆和圆)
- drawLine(直线)
- drawRect(矩形)
- setColor(设置画笔颜色)
- setFont(设置画笔字体,传入的是 Font 对象)
- fillRect(画填充矩形,先要设置画笔颜色)
- fill3DRectd
- fillOval
- drawString(写字,x和y坐标对应的是左下角)
- drawImage(画图片)
- 获取图片资源
Image image = Toolkit.getDefaultToolkit().getImage(Panel.class.getResourse());
- 图片要放在out文件夹内的根目录下
- 获取图片资源
-
paint被调用的时机
- 窗口最小化再最大化
- 窗口大小发生改变
- repaint方法被调用
-
与文件名相同的类继承 JFrame 类(画框)
-
构造器内容:
- 定义面板
- 初始化面板
- 把面板放入窗口(画框)
- 设置窗口大小
- 可视化
-
参考代码
import javax.swing.*; import java.awt.*; public class HomeWork1 extends JFrame { //定义一个面板 private Mypanel mp = null; public static void main(String[] args) { new HomeWork1(); } //构造器 public HomeWork1(){ //初始化面板 mp = new Mypanel(); //面板放入窗口 this.add(mp); //设置窗口大小 this.setSize(500,500); //可视化 this.setVisible(true); //关闭画框时关闭程序 this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } } class Mypanel extends JPanel{ @Override public void paint(Graphics g) { super.paint(g); g.drawOval(10,10,300,300); } }
Java 事件处理机制
- 委派处理模型:事件发生时,事件源将事件对象传递给“事件的监听者”,监听者再进行处理
- 事件源:产生时间的对象,如按钮、窗口
- 事件对象:存储事件的很多信息,如按下的按键等
- 面板(画板)接入键盘监听器接口
KeyListener
- 接入的类可以成为事件监听者
- 一个类可以接入多个监听器接口
- 按下
Alt + Enter
重写方法- keyTyped(字符输出时触发)
- ketPressed(按下按键触发)
- keyReleased(松开按键触发)
- 传入
KeyEvent
对象 KetEvent
对象方法- getKeyCode (返回按下哪个键)