Java图形化界面设计(绘图)
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
立体化教材计算机系列 —《Java程序设计》
‹#›
Java绘图基础
public void paint(Graphics g){ super.paint(g);//调用父类的绘制方法 //获取当前窗口的宽度与高度值 appWidth=this.getWidth(); appHeight=this.getHeight(); int ox,oy,x,y; //设置原点(ox,oy)的坐标为当前窗口中心 ox=appWidth/2; oy=appHeight/2; g.setColor(Color.RED); //设置绘图的前景色
立体化教材计算机系列 —《Java程序设计》
‹#›
Java绘图基础
GUI组件的绘图方法
1 3 Component类与paint()方法 java.awt.Component类作为大多数GUI组件的基类,定义 了paint()方法,用来实现在组件上绘制图形的功能。 applet小程序的基类:Applet或Japplet,也间接地由 Component类派生,因此applet小程序也具有paint()方 法 paint()方法定义:void paint(Graphics g); paint()方法通常由系统自动调用,用户一般不能直 接在程序中显式调用它,而是通过repaint()方法来间 接调用它。组件首次显示外观时,applet小程序在被加 载运行时,系统都会调用相关的paint()方法。
立体化教材计算机系列 —《Java程序设计》
‹#›
Java绘图基础
4 3 颜色设置 GUI编程中,Color类定义了操作颜色的常量与方法,该类 的完整包路径为java.awt.Color。 Color类常用的三种构造方法的定义为: ①public Color(int r,int g,int b); ②public Color(float r,float g,float b); ③public Color(int rgb); Color类中封装了常用的13种标准颜色的符号常量。 如: Color.BLACK Color.WHITE Color.RED Color.GREEN Color.BLUE Color.YELLOW 等
立体化教材计算机系列 —《Java程序设计》
‹#›
Java绘图基础
//计算最新的轨迹点坐标 x =(int)Math.round(r*Math.cos(angle)*2); y =(int)Math.round(r*Math.sin(angle)); g.fillOval(ox+x,oy+y,1,1); //画轨迹点 } j = j + 5; //增进的步长 } } public static void main(String[] args){ Exa_10_1 app=new Exa_10_1("Paint() Method Usage"); app.setVisible(true); } }
立体化教材计算机系列 —《Java程序设计》
‹#›
Java绘图基础
【例】用组件的getGraphics()方法实现如下所述的功能: 在一个300×200的JFrame窗口内,放置一个标签与一个按钮, 当点击按钮后,标签中绘制一个黄色的椭圆,并在椭圆内显 示蓝色的RGB值。
立体化教材计算机系列 —《Java程序设计》
立体化教材计算机系列 —《Java程序设计》
‹#›
Java绘图基础
此外,Component类中还定义了另外两个直接或间接调用 paint()方法的方法: ①更新方法update(Graphics g); 当组件的尺寸、外观等被改变时,系统将调用此方法,重新 绘制组件。update()方法的实现中包含了对paint()方法 的调用。 ②重绘方法repaint(); 该方法没有参数,执行时会清除组件的原有背景图形,并使 用paint()方法重新绘制该组件。用户可以在程序中直接 调用repaint()方法,当组件为轻量级组件时,该方法会 直接调用paint()方法,否则会通过调用update()方法间 接调用paint()方法。
立体化教材计算机系列 —《Java程序设计》
‹#›
Java绘图基础
//绘制坐标轴 g.drawLine(ox,10,ox,appHeight); g.drawLine(0,oy,appWidth,oy); //定义控制角度与半径变化的变量 int i,j=10; double angle,r; while (j<100){ for(i=0;i<1023;i++){ //计算最新的角度 angle = i*PI/512; r = j*Math.sin(2*angle);
立体化教材计算机系列 —《Java程序设计》
‹#›
Java绘图基础
此外,Color类还提供了获取RGB颜色分量的对应方法: ①public int getRed(); //获取当前颜色的红色分量值(范围为[0,255])。 ②public int getGreen(); //获取当前颜色的绿色分量值(范围为[0,255])。 ③public int getBlue(); //获取当前颜色的蓝色分量值(范围为[0,255])。
立体化教材计算机系列 —《Java程序设计》
‹#›
Java绘图基础
Component类还提供了一组用来设置外观与行为的set方法: ①setEnabled(),设置组件的可用性。 ②setVisible(),设置组件的可见性。 ③setForeground(),设置组件的前景色。 ④setBackground(),设置组件的背景色。 ⑤setBounds(),设置组件的起始位置与尺寸大小。 ⑥setLocation(),设置组件的起始位置。 ⑦setSize(),设置组件的尺寸大小。 ⑧setPreferredSize(),设置组件首选的尺寸。 ⑨setMaximumSize(),设置组件的最大尺寸。 ⑩setMinimumSize(),设置组件的最小尺寸。 此外,常用的还有一个设置组件显示文字字体类型与样式的一个方法: public void setFont(Font f)。
‹#›
wk.baidu.com
Java绘图基础
import java.awt.*; import java.awt.event.*; import java.awt.Color; import javax.swing.*; public class Exa_10_2 extends JFrame implements ActionListener{ private JLabel jlblDraw=new JLabel(); private JButton jbtnDraw=new JButton("开始绘图"); public Exa_10_2(String title){ super(title); this.setSize(300,200); jlblDraw.setSize(300,150); //实现关闭窗口的功能
立体化教材计算机系列 —《Java程序设计》
‹#›
Java绘图基础
3 图形文本 GUI程序中,文本的输出显示是作为图形对象来处理的, 控制台应用程序中的System.out.println()方法,只能以 DOS字符的形式,在命令行窗口上显示文字。GUI界面中字 符串信息的显示,要使用Graphics或Graphics2D提供的绘 制字符或字符串信息的成员方法。
立体化教材计算机系列 —《Java程序设计》
‹#›
Java绘图基础
【例】在一个300×200的Frame窗口内,用红色绘制四叶玫 瑰曲线。
立体化教材计算机系列 —《Java程序设计》
‹#›
Java绘图基础
import java.awt.*; import java.awt.event.*; import java.awt.Color; public class Exa_10_1 extends Frame{ private static final double PI=3.1415926; private int appWidth,appHeight; public Exa_10_1(String title){ super(title); this.setSize(300,200); //实现关闭窗口的功能 this.addWindowListener(new WindowAdapter(){ public void windowClosing(WindowEvent e){ System.exit(0); } }); }
Java图像处理
‹#›
立体化教材计算机系列 —《Java程序设计》
本章知识难点
1 3 2 3 3 4 3
GUI组件及Graphics类的绘图方法
字体设置及颜色设置 基本图形绘制的各方法及画布Canvas 图像的静态、动态处理
立体化教材计算机系列 —《Java程序设计》
‹#›
Java绘图基础
Java的绘图机制 1 3 与图形图像处理相关的类 java中支持图形图像处理的类与接口主要定义于 java.awt类库中
立体化教材计算机系列 —《Java程序设计》
‹#›
Java绘图基础
Graphics类提供了三种绘制文字的方法: ①字符串输出方法:drawString(String s,int x,int y)。 ②字符数组输出方法:drawChars(char[] s,int offset,int length,int x,int y)。 ③字节数组输出方法:drawBytes(byte[] s,int offset,int length,int x,int y)。 其中x、y参数为字符串输出的位置坐标。 例如:g. drawString(“我的爱好是读书和听音 乐”,50,100);语句将会绘出一串文本,输出位置坐标为 (50,100) 。
第十章 文本显示与图形图像处理
目 录
重点与难点点拨 Java绘图基础 字体设置
Graphics绘图
Java图像处理
经典练习题
立体化教材计算机系列 —《Java程序设计》
‹#›
本章知识重点
1 3
2 3
与图形图像处理相关的类
GUI组件及Graphics类的绘图方法
字体设置
3
4 3 5 3
基本图形绘制的各方法及画布Canvas
立体化教材计算机系列 —《Java程序设计》
‹#›
Java绘图基础
2 3 Graphics类 Graphics类中封装了几乎所有的图形处理的方法,该类用于在 一个二维坐标系中绘制图形与显示格式化文字。由于Graphics 类定义于java.awt包中,在绘制图形的程序中,必须引入 java.awt,即在程序开头需加上以下语句:
立体化教材计算机系列 —《Java程序设计》
‹#›
Java绘图基础
如创建一个以粉红色pink(RGB值为: 255,175,175)前景显示“姓名”的标签对象,可 用以下语句实现: Color labelColor=new Color(255,175,175); Label lblName=new Label(“姓名”); lblName.setForeground(labelColor); 或者用以下等价的方式实现: Label lblName=new Label(“姓名”); lblName.setForeground(Color.PINK);
import java.awt.*; 或import java.awt.Graphics ;
立体化教材计算机系列 —《Java程序设计》
‹#›
Java绘图基础
Graphics类的绘图区域为能够绘制并显示图形的一些组 件,坐标原点在组件的左上角,X轴为水平方向,坐标值 从左至右逐渐增大,Y轴在垂直方向,坐标值从上向下逐 渐增大。Java坐标的度量单位是像素,在Java的图形坐 标系统中,坐标值只能为整数。由于不同的平台具体实 现绘图功能中存在着一定差异,Graphics类为抽象类, 不能用new命令创建Graphics类实例对象,Java只提供给 用户一个不依赖于具体平台的通用接口,使用户能够调 用Graphics类的各种绘图方法,实现绘图与绘制文本的 功能。
立体化教材计算机系列 —《Java程序设计》
‹#›
Java绘图基础
2 3 Component类的get/set方法组
组件的基类Component类提供了一组get类型的方法用来 获取当前绘图上下文环境的一些重要参数。 getGraphics()为当前组件创建 graphics上下文环境 getGraphicsConfiguration()获取相关的Graphics设置 getForeground()获取与当前组件的前景颜色 getBackground()获取与当前组件的背景颜色 getFont()获取与当前组件的字体对象 getFontMetrics(Font font)获取指定字体的样式信息
‹#›
Java绘图基础
public void paint(Graphics g){ super.paint(g);//调用父类的绘制方法 //获取当前窗口的宽度与高度值 appWidth=this.getWidth(); appHeight=this.getHeight(); int ox,oy,x,y; //设置原点(ox,oy)的坐标为当前窗口中心 ox=appWidth/2; oy=appHeight/2; g.setColor(Color.RED); //设置绘图的前景色
立体化教材计算机系列 —《Java程序设计》
‹#›
Java绘图基础
GUI组件的绘图方法
1 3 Component类与paint()方法 java.awt.Component类作为大多数GUI组件的基类,定义 了paint()方法,用来实现在组件上绘制图形的功能。 applet小程序的基类:Applet或Japplet,也间接地由 Component类派生,因此applet小程序也具有paint()方 法 paint()方法定义:void paint(Graphics g); paint()方法通常由系统自动调用,用户一般不能直 接在程序中显式调用它,而是通过repaint()方法来间 接调用它。组件首次显示外观时,applet小程序在被加 载运行时,系统都会调用相关的paint()方法。
立体化教材计算机系列 —《Java程序设计》
‹#›
Java绘图基础
4 3 颜色设置 GUI编程中,Color类定义了操作颜色的常量与方法,该类 的完整包路径为java.awt.Color。 Color类常用的三种构造方法的定义为: ①public Color(int r,int g,int b); ②public Color(float r,float g,float b); ③public Color(int rgb); Color类中封装了常用的13种标准颜色的符号常量。 如: Color.BLACK Color.WHITE Color.RED Color.GREEN Color.BLUE Color.YELLOW 等
立体化教材计算机系列 —《Java程序设计》
‹#›
Java绘图基础
//计算最新的轨迹点坐标 x =(int)Math.round(r*Math.cos(angle)*2); y =(int)Math.round(r*Math.sin(angle)); g.fillOval(ox+x,oy+y,1,1); //画轨迹点 } j = j + 5; //增进的步长 } } public static void main(String[] args){ Exa_10_1 app=new Exa_10_1("Paint() Method Usage"); app.setVisible(true); } }
立体化教材计算机系列 —《Java程序设计》
‹#›
Java绘图基础
【例】用组件的getGraphics()方法实现如下所述的功能: 在一个300×200的JFrame窗口内,放置一个标签与一个按钮, 当点击按钮后,标签中绘制一个黄色的椭圆,并在椭圆内显 示蓝色的RGB值。
立体化教材计算机系列 —《Java程序设计》
立体化教材计算机系列 —《Java程序设计》
‹#›
Java绘图基础
此外,Component类中还定义了另外两个直接或间接调用 paint()方法的方法: ①更新方法update(Graphics g); 当组件的尺寸、外观等被改变时,系统将调用此方法,重新 绘制组件。update()方法的实现中包含了对paint()方法 的调用。 ②重绘方法repaint(); 该方法没有参数,执行时会清除组件的原有背景图形,并使 用paint()方法重新绘制该组件。用户可以在程序中直接 调用repaint()方法,当组件为轻量级组件时,该方法会 直接调用paint()方法,否则会通过调用update()方法间 接调用paint()方法。
立体化教材计算机系列 —《Java程序设计》
‹#›
Java绘图基础
//绘制坐标轴 g.drawLine(ox,10,ox,appHeight); g.drawLine(0,oy,appWidth,oy); //定义控制角度与半径变化的变量 int i,j=10; double angle,r; while (j<100){ for(i=0;i<1023;i++){ //计算最新的角度 angle = i*PI/512; r = j*Math.sin(2*angle);
立体化教材计算机系列 —《Java程序设计》
‹#›
Java绘图基础
此外,Color类还提供了获取RGB颜色分量的对应方法: ①public int getRed(); //获取当前颜色的红色分量值(范围为[0,255])。 ②public int getGreen(); //获取当前颜色的绿色分量值(范围为[0,255])。 ③public int getBlue(); //获取当前颜色的蓝色分量值(范围为[0,255])。
立体化教材计算机系列 —《Java程序设计》
‹#›
Java绘图基础
Component类还提供了一组用来设置外观与行为的set方法: ①setEnabled(),设置组件的可用性。 ②setVisible(),设置组件的可见性。 ③setForeground(),设置组件的前景色。 ④setBackground(),设置组件的背景色。 ⑤setBounds(),设置组件的起始位置与尺寸大小。 ⑥setLocation(),设置组件的起始位置。 ⑦setSize(),设置组件的尺寸大小。 ⑧setPreferredSize(),设置组件首选的尺寸。 ⑨setMaximumSize(),设置组件的最大尺寸。 ⑩setMinimumSize(),设置组件的最小尺寸。 此外,常用的还有一个设置组件显示文字字体类型与样式的一个方法: public void setFont(Font f)。
‹#›
wk.baidu.com
Java绘图基础
import java.awt.*; import java.awt.event.*; import java.awt.Color; import javax.swing.*; public class Exa_10_2 extends JFrame implements ActionListener{ private JLabel jlblDraw=new JLabel(); private JButton jbtnDraw=new JButton("开始绘图"); public Exa_10_2(String title){ super(title); this.setSize(300,200); jlblDraw.setSize(300,150); //实现关闭窗口的功能
立体化教材计算机系列 —《Java程序设计》
‹#›
Java绘图基础
3 图形文本 GUI程序中,文本的输出显示是作为图形对象来处理的, 控制台应用程序中的System.out.println()方法,只能以 DOS字符的形式,在命令行窗口上显示文字。GUI界面中字 符串信息的显示,要使用Graphics或Graphics2D提供的绘 制字符或字符串信息的成员方法。
立体化教材计算机系列 —《Java程序设计》
‹#›
Java绘图基础
【例】在一个300×200的Frame窗口内,用红色绘制四叶玫 瑰曲线。
立体化教材计算机系列 —《Java程序设计》
‹#›
Java绘图基础
import java.awt.*; import java.awt.event.*; import java.awt.Color; public class Exa_10_1 extends Frame{ private static final double PI=3.1415926; private int appWidth,appHeight; public Exa_10_1(String title){ super(title); this.setSize(300,200); //实现关闭窗口的功能 this.addWindowListener(new WindowAdapter(){ public void windowClosing(WindowEvent e){ System.exit(0); } }); }
Java图像处理
‹#›
立体化教材计算机系列 —《Java程序设计》
本章知识难点
1 3 2 3 3 4 3
GUI组件及Graphics类的绘图方法
字体设置及颜色设置 基本图形绘制的各方法及画布Canvas 图像的静态、动态处理
立体化教材计算机系列 —《Java程序设计》
‹#›
Java绘图基础
Java的绘图机制 1 3 与图形图像处理相关的类 java中支持图形图像处理的类与接口主要定义于 java.awt类库中
立体化教材计算机系列 —《Java程序设计》
‹#›
Java绘图基础
Graphics类提供了三种绘制文字的方法: ①字符串输出方法:drawString(String s,int x,int y)。 ②字符数组输出方法:drawChars(char[] s,int offset,int length,int x,int y)。 ③字节数组输出方法:drawBytes(byte[] s,int offset,int length,int x,int y)。 其中x、y参数为字符串输出的位置坐标。 例如:g. drawString(“我的爱好是读书和听音 乐”,50,100);语句将会绘出一串文本,输出位置坐标为 (50,100) 。
第十章 文本显示与图形图像处理
目 录
重点与难点点拨 Java绘图基础 字体设置
Graphics绘图
Java图像处理
经典练习题
立体化教材计算机系列 —《Java程序设计》
‹#›
本章知识重点
1 3
2 3
与图形图像处理相关的类
GUI组件及Graphics类的绘图方法
字体设置
3
4 3 5 3
基本图形绘制的各方法及画布Canvas
立体化教材计算机系列 —《Java程序设计》
‹#›
Java绘图基础
2 3 Graphics类 Graphics类中封装了几乎所有的图形处理的方法,该类用于在 一个二维坐标系中绘制图形与显示格式化文字。由于Graphics 类定义于java.awt包中,在绘制图形的程序中,必须引入 java.awt,即在程序开头需加上以下语句:
立体化教材计算机系列 —《Java程序设计》
‹#›
Java绘图基础
如创建一个以粉红色pink(RGB值为: 255,175,175)前景显示“姓名”的标签对象,可 用以下语句实现: Color labelColor=new Color(255,175,175); Label lblName=new Label(“姓名”); lblName.setForeground(labelColor); 或者用以下等价的方式实现: Label lblName=new Label(“姓名”); lblName.setForeground(Color.PINK);
import java.awt.*; 或import java.awt.Graphics ;
立体化教材计算机系列 —《Java程序设计》
‹#›
Java绘图基础
Graphics类的绘图区域为能够绘制并显示图形的一些组 件,坐标原点在组件的左上角,X轴为水平方向,坐标值 从左至右逐渐增大,Y轴在垂直方向,坐标值从上向下逐 渐增大。Java坐标的度量单位是像素,在Java的图形坐 标系统中,坐标值只能为整数。由于不同的平台具体实 现绘图功能中存在着一定差异,Graphics类为抽象类, 不能用new命令创建Graphics类实例对象,Java只提供给 用户一个不依赖于具体平台的通用接口,使用户能够调 用Graphics类的各种绘图方法,实现绘图与绘制文本的 功能。
立体化教材计算机系列 —《Java程序设计》
‹#›
Java绘图基础
2 3 Component类的get/set方法组
组件的基类Component类提供了一组get类型的方法用来 获取当前绘图上下文环境的一些重要参数。 getGraphics()为当前组件创建 graphics上下文环境 getGraphicsConfiguration()获取相关的Graphics设置 getForeground()获取与当前组件的前景颜色 getBackground()获取与当前组件的背景颜色 getFont()获取与当前组件的字体对象 getFontMetrics(Font font)获取指定字体的样式信息