Java2第14章的PPT教学课件
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
使用Graphics类必须依赖于某个组件。 根据用户声明的类与组件类Component的 关系划分,有两种绘图方式。
1)声明的类是组件类Component的子类 2)声明的类不是组件类Component的子类
2020/12/11
7
14.2 绘图程序设计
下面通过例子来说明绘图应用程序的设计方法, 读者可以通过分析实例来掌握绘图程序设计的技巧。
bnt1.addActionListener(frm);
bnt2.addActionListener(frm);
frm.setVisible(true);
}
public void actionPerformed(ActionEvent e)
{
Button bt=(Button)e.getSource(); //获取被按下的按钮
//设置监听者
frm.addMouseListener(new MyMouseList()); //设置监听者
frm.setVisible(true);
}
2020/12/11
12
//定义静态内部类MyMouseList,并继承自MouseAdapter
static class MyMouseList extends MouseAdapter
{
static app14_1 frm=new app14_1(); static Button bnt1 =new Button(“画圆”); static Button bnt2 =new Button(“画椭圆”); int circle=0;
2020/12/11
9
public static void main(String args[])
第14章 绘图程序设计
通过本章的学习,主要掌握以下知识点:
绘图类 三个重要的绘图方法 绘图程序设计
本章的重点:
掌握三个绘图方法
本章的难点:
绘图程序设计的技巧
2020/12/11
2
14.1 绘图类
原点(0,0)
·
(x,y)
y 图14.1 Java绘图的坐标系统
2020/12/11
x
3
1.图形显示 格式:
public void paint(Graphics g) paint()是组件类的一个方法,参数是绘图类 java.awt.Graphics的对象g。
2020/12/11
4
paint()方法在下列情况发生时会自动运行。
•当新建窗口显示在显示器上或从隐藏变成显 示时;
•从缩小图标还原之后; •正在改变窗口的大小时。
见教材【例14.1】~【例14.3】
2020/12/11
8
【例14.1】在窗口中设置两个按钮,分别用于画圆 或椭圆,并在绘图区域中显示字符串“画圆或椭 圆”。
//app14_1.java 简单的绘图程序 import java.awt.*;
import java.awt.event.*;
public class app14_1 extends Frame implements ActionListener
{
frm.setTitle(“简单绘图应用程序”);
frm.setSize(300,250);
frm.setLayout(null);
bnt1.setBounds(90, 215,50,25);
bnt2.setBounds(160,215,50,25);
frm.add(bnt1); frm.add(bnt2);
2020/12/11
5
2.更新图形 格式: public void update(Graphics g)
3.重画图形 格式: public void repaint() public void repaint(int x,int y,int width,int height)
2020/12/11
6
{
public void mousePressed(MouseEvent e)
{ x1= e.getX(); //取得鼠标按下时的x坐标,作为起点的x坐标 y1= e.getY(); //取得鼠标按下时的y坐标,作为起点的y坐标
}
} public void mouseDragged(MouseEvent e) //用鼠标拖动事件源的处理操作}}2020/12/1111
【例14.2】编制一个画图板程序,进行交互式作图。
//app14_2.java
手工绘画程序
import java.awt.*;
import java.awt.event.*;
public class app14_2 extends Frame implements MouseMotionListener
{
static int x1,y1,x2,y2;
public static void main(String args[])
{
app14_2 frm=new app14_2();
frm.setTitle(“交互式绘图”);
frm.setBounds(10,10,250,200);
frm.addMouseMotionListener(frm);
{ g.setFont(new Font(“楷体”,Font.ITALIC,20)); //设置 字体 g.setColor(Color.red); //设置颜色 g.drawString(“画圆或椭圆”,120,50); //以(120.50) 为左下角显示字符串 if (circle==1) g.drawOval (100,90,70,70); //画圆 else if (circle==2) g.drawOval (80,60,70,120); //画 椭圆
if (bt==bnt1) circle=1;
//若按下的是“画圆”按钮
else circle=2;
//若按下的是“画椭圆”按钮
Graphics g=getGraphics(); //获取窗口的绘图区
paint(g);
}
2020/12/11
10
public void paint(Graphics g)
{ x2= e.getX(); //取得拖动鼠标时的x坐标 y2= e.getY(); //取得拖动鼠标时的x坐标
Graphics g=getGraphics(); g.drawLine(x1,y1,x2,y2); //以(x1,y1)为起点,(x2,y2)为终点画线 x1=x2; //更新绘线起点的x坐标 y1=y2; //更新绘线起点的y坐标