您的位置:首页 > 编程语言 > Java开发

java学习笔记---第七章图形程序设计

2009-05-27 20:32 369 查看
第7章:图型程序设计

1.      
Swing概述
AWT窗口工具箱
Swing没有完全替代awt,而是基于awt架构之上。Swing仅仅提供了能力更加强大的用户界面组件。
Swing是指被绘制的非对等体用户界面类
Awt是指对象事件处理这样的窗口工具箱的底层机制
Sun开发了一种被称为“metal”的独立于平台的观感,市场上成为java观感
2.      
创建框架:
顶层窗口被称为框架frame
AWT Frame类   
Swing Jframe类
Jframe是极少数几个不绘制在画布上的Swing组建之一,它的修饰不见由用户的窗口系统绘制,而不是由Swing绘制
在包含多个框架的程序中,不能因为用户关闭了其中一个框架就让程序退出
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
3.      
框架定位
dispose方法用于关闭窗口,并回收创建窗口所使用的全部资源
setIconImage 方法用于将窗口极小化时的图标设置为Image对象
setTitle方法改变标题栏中的文本
setResizable 利用一个boolean值确定框架的大小是否允许用户改变
setLocation   setBounds
对于专业应用程序来说,应该检查用户屏幕的分辨率,并根据其分辨率编写代码重置框架的大小:使用Toolkit类的静态方法getDefaultToolkit得到一个toolkit对象,并调用getScreenSize()方法,该方法以Dimension对象的形式返回屏幕大小
 
4.      
在面板中显示信息
框架被设计为放置组件的容器,应该在一个称为面板的组件上绘制信息,并将这个面板添加到框架中
JFrame结构:根面板,层级面板,玻璃面板,内容窗格
面板的两个特性:
    包含一个可以用于绘图的表面
    本身也是一个容器,在面板中还可以放置按钮,滑块等这样的用户界面组件
为了在面板上进行绘图,需要:
    定义一个扩展于JPanel的类
    覆盖paintComponent方法
在java中,所有绘图都必须通过graphics对象,其中包括绘制图案、图像和文本
一定不要自己调用paintComponent方法,在应用程序需要重新绘图的时候,这个方法将被自动的调用,不要人为的干预这个自动处理的过程
强制刷新屏幕,调用repaint方法,而不是paintComponent方法
在子类中覆盖paintComponent方法时,为了确保超类完成自己的那部分工作,必须在绘制自己的内容之前调用super.paintComponent()方法
 
 
 
5.      
2D图形
要想使用Java 2D库绘制图形,需要获得一个Graphics2D类对象
java2D库的三大对象:Line2D  Rectangle2D 
Ellipse2D
要想绘制图形,首先要创建一个实现了shape接口的类地对象,然后调用Graphics2D类中的draw方法
java2D图形采用浮点坐标,java2D库中内部很多浮点计算都采用单精度float,在某些平台上,float计算的速度比较快,并且它只需要double的一半存储量,但有时候处理float比较不方便,因为很多方法返回值为double,必须作强制类型转换
2D库的设计者将每个图形类提供了两个版本:一个是为节省空间的程序员提供的float版本,一个是为那些懒惰的程序员提供的double类型的版本。但只有在构造图形能够对象时,才会用到。
Rectangle2D和Ellipse2D类都是由公共超类RectangleShape类继承来的
 
 
 
6.      
颜色
使用Graphics2D类的setPaint方法可以为图形环境上的所有后续的绘制操作选择颜色.
步骤:选择颜色,绘制图形,再选择颜色,再绘制图形
Color类定义了13种标准颜色,还能使用三原色进行定义,使用Color类的构造器
Color类的brighter()方法和darker() 方法,加亮或变暗当前颜色
设置背景颜色:使用Component类的steBackground方法
SystemColor类提供了一些系统颜色的全局参数
填充边框使用draw()方法,填充内块使用fill()方法
 
7.      
为文本设定特殊字体
字体名由Helvetica 这样的字体家族名和一个可选的Bold后缀组成
要想知道某台特定计算机上所允许使用的字体,就需要调用GraphicsEnvironment类中的getAvailableFontFamilyName方法,这个方法返回一个字符型数组,其中GraphicsEnvironment类描述了用户系统的图形环境
为了创建一个公共基准,AWT定义了五个逻辑字体名:

   
SansSerif
   
Serif
   
Monospaced
   
Dialog
   
DialogInput
这些字体将映射到客户机上的实际字体
字体映射定义在java安装的jre/lib子目录中的fontconfig.properties文件中。
要想使用某种字体绘制字符,必须首先利用指定的字体名、字体风格和字体大小来创建一个Font类对象
Java字体包含了通用的ASC2字符和符号,只有在Unicode字符集中定义的符号才能够使用
 
8.      
图像
一旦图像保存在本地文件或因特网上的某个位置上,就可以将它们读到java应用程序中,并在Graphics对象上进行显示
String filename=”…”
Image image = ImageIo.read(new File(filename));
这个方法将抛出一个IOException
image包含了一个封装图像数据的对象引用,可以使用Graphics类的drawImage方法将图像显示出来
使用copyArea可以拷贝图像
  
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息