Java绘图坐标系:
坐标原点位于左上角,以像素为单位
像素:计算机显示在屏幕上的内容都是以像素为单位的组成的。像素越多,画面越清晰。
坐标系中,第一个坐标为x坐标,表示当前方向为水平方向,距离坐标原点x的单位
第二个坐标为y坐标,表示当前方向为垂直方向,距离坐标原点y个单位
Java绘图技术:
创建画板 -> 使用paint方法在画板上绘图 -> 创建画框 -> 将画板放入画框中
Java绘图原理:
Component类中提供了两个十分重要的方法:
paint(Graphics g) // 绘制组件外观,g相当于一个画笔
repaint() // 刷新组件外观,再次调用paint方法
创建画板:
class MyPanel extends JPanel // 继承Jpanel类,相当于定义了一个画板
调用paint方法绘画:
// Graphics类中提供了很多绘画方法
// drawOval(int x, int y, int width, int height):绘图圆形
g.drawOval(10, 10, 100, 100);
// 使用Graphics类中的不同方法绘制不同的图形:
// 直线:drawLine(int x1, int y1, int x2, int y2) :x1、y1表示起点的位置;x2、y2表示终点的位置
g.drawLine(10, 10, 110, 110);
// 矩形:drawRect(int x, int y, int width, int height):x1、y1表示左上角点的坐标,width、height表示宽高
g.drawRect(10, 10, 100, 100);
// 填充矩形:fillRect(int x, int y, int width, int height)
g.setColor(Color.PINK);// 设置画笔颜色
g.fillRect(110, 10, 100, 100);
// 填充椭圆:fillOval(int x, int y, int width, int height)
g.setColor(Color.RED);
g.fillOval(10, 110, 50, 100);
// 图片:drawImage(Image image, int x, int y, int width, int height)
Image image = Toolkit.getDefaultToolkit().getImage("D:\\idea\\IntelliJ IDEA 2021.1.3\\projects\\GankGame\\src\\com\\kxg\\draw\\dog.PNG");
g.drawImage(image, 110, 110, 100, 100, this);
// 字符串:drawString(String str, int x, int y)
g.setColor(Color.BLUE);// 设置画笔颜色
g.setFont(new Font("隶书", Font.BOLD, 20)); // 设置字体:样式、粗细、大小
g.drawString("北京欢迎你", 200, 100);
创建画框
public class BallMove extends JFrame // 继承JFrame类,实现画框
将画板放入画框中:
// 初始化画板
myPanel = new MyPanel();
// 将面板加入画框中
this.add(myPanel);
// 设置画框的大小
this.setSize(400, 300);
// 设置画框可视
this.setVisible(true);
// 点击画框窗口上的小x,程序也随之结束
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Java中的事件处理机制:
Java时间处理采取的是“事件委派机制”:当事件发生时,产生事件对象,把此信息传递给“事件的监听者”处理
信息:Java.awt.event事件类库中的某个类所创建的对象,把它称之为"事件处理对象"
(用户操作)事件源 -----产生的时间对象-----> 事件监听者(事件处理方法)
事件源:产生时间的一个对象
事件:承载事件源状态改变时的对象,比如:键盘事件、鼠标事件、窗口事件等等,会生成对象
事件对象中保存着当前时间的许多信息。比如:KeyEvent类中有被按下键盘的键的Code值
事件监听接口:
事件源可以产生一个对象,传给事件监听者处理。
事件监听者:
事件监听者实际上是一个类,实现了某个事件监听器接口,对接收的事件做出处理
事件监听接口可以有很多种,不同的事件监听器实现不同的接口。一个类可以实现多个监听接口。
// KeyListener:键盘监听器,可以监听键盘事件
class MyPanel extends JPanel implements KeyListener //实现KeyListener接口