第4章 颜色和字体
两种颜色模式:索引颜色模式和直接颜色模式
AWT技巧:在应用程序和applet中加载图像
appet中提供下面的两种重载方法,用于加载图像:
Applet.getImage(URL url)
Applet.getImage(URL url,String string)
由于应用程序不是applet类的扩展——应用程序通常扩展java.awt.Frame——所以它们必须用替代的方法来加载图像。下面列出的java.awt.Toolkit方法就是在应用程序中经常采用的加载图像的方法:
Toolkit.getImgae(URL url)
Toolkit.getImage(String string)
加载图像是异步进行的,load→imageUpdate()→repaint()→load直到完成,所以通过FLAGS的值来判断图像加载的情况
ImageObserver.imageUpdate(Image image, int flags, int x, int y, int w, int h)
flags 值
ABORT 图像加载被中断
ALLBITS 所有的位都已经加载给图像
ERROR 在加载过程中发生错误
FRAMEBITS 多帧图像的一个帧被传送,一般用于动画GIF
HEIGHT 图像的高度已经可用
PROPERTIES 图像的属性已经可用
SOMEBITS 图像的缩放变体的多个位已可用
WIDTH 图像的宽度已经可用
AWT技巧:在调用paint()方法之前,update()进行背景清除
无论什么时候调用repaint(),Component.update()方法都会被调用,该方法将首先清除构件中的背景,然后调用paint()。当该方法被设置为缺省行为时,如果构件被连续修改,它能引起闪动。要消除闪动,可覆盖update()直接调用paint()方法。
使用MediaTracker分为下面的三步:
1)创建MediaTracker实例。
2)使用MediaTracker.addImage()指明要跟踪的图像对象。
3)创建try/catch块。try块等待和ID相关的图像完全加载。由于MediaTracker的waitForID方法可能抛出InterruptedException方法,而且不必通过将变量flags和正确的常量求与来判断什么时候图像被完全加载。
AWT技巧:在AWT构件中,使用系统属性控制图像重画
在AWT构件中,有下面的两个系统属性影响图像的重画特征:
awt.image.incrementalDraw
awt.image.redrawrate
如果awt.image.incrementalDraw的值是false,则表示即使当它们的位发生改变时图像不会被持续地画出;只有图像被完全加载后,图像才会显示出来。
awt.image.redrawrate决定动画的速率,其单位是ms。如果不设置该属性的话,其缺省值为100ms。
我们可以通过一些其他的方法,来代替通过指定图像硬编码的URL路径或文件名来加载图像。一般情况下,采用的都是加载图像作为资源的方法。通过类加载器的算法可以指定资源搜索的方式,在该方式下,允许资源位于不同的位置,包括可以位于.jar和.zip文件中。当作为资源被加载时,和图像相关的URL的getContent被调用时返回ImageProducer。一旦得到ImageProducer,Component.createImage(ImageProducer)可能会被调用,并返回一个图像本身的引用。
加载图像作为资源为加载图像提供了比较通用的机制,该方法不必依赖于图像位于事先知道的位置。此外,还可以开发自定义类加载器,使用搜索方式在网络上搜索资源。
在java.awt.Component中,提供下面的两种方法用来创建图像:
·createImage(ImageProducer)
·createImage(int width,int height)
java.awt.Toolkit类也具有创建图像能力。在该类中,提供了下面的三种创建图像的方法:
·createImage(ImageProducer)
·createImage(byte[] bits)
·createImage(byte[] bits,int offset,int length)
代码段:
URL url = this.getClass().getResources("资源文件名");//注这个文件要以/开头 这是个相对于项目环境根目录的一个相对位置
//Image img = 上面两个类中的createImage(ImageProducer方法); 下面这两种方法根据不同的分类执行
//Image img = this.createImage((ImageProducer)url.getContent()); applet
//Image img = Toolkit.getDefaultToolkit().createImage((ImageProducer)url.getContent()); application
分享到:
相关推荐
《Java JDK6学习笔记》是作者良葛格本人近几年来学习Java的心得笔记,结构按照作者的学习脉络依次展开,从什么是Java、如何配置Java开发环境、基本的Java语法到程序流程控制、管理类文件、异常处理、枚举类型、泛型...
JAVA图形编程(AWT+SWING),包括AWT和SWING两部分。很不错的学习资料,全面,细致,和大家一起分享。
5. 四•数组 5-9 5.1. 声明数组 5-9 5.2. 创建数组 5-9 5.3. 初始化数组 5-10 5.4. 多维数组 5-10 5.5. 数组拷贝 5-10 6. 五•对象和类 6-11 6.1. 面向对象与面向过程 6-11 6.2. 对象的概念 6-12 6.3. 成员变量和...
全是自己编写的,没问题,是个学习java awt的好笔记。是个非抢号的一个学习资料
java学习过程中的随手笔记,包括常见的文件选择和保存窗口的实现,poi的excel处理
(二)面向对象技术总结.pdf (三)corejava高级特性总结 (四)接口学习总结 (五)异常和内部类 (六)集合框架学习总结 (七)GUI和AWT事件模型 (八)多线程学习总结 (九)输入输出流学习总结 (十)网络编程学习总结
Swing和AWT 事件处理器与访问共享状态的其他代码都要采取线程安全的方式实现 框架通过在框架线程中调用应用程序代码将并发性引入应用程序,因此对线程安全的需求在整个应用程序中都需要考虑 基础知识 ...
十六进制数,零x开头 0x55(十六进制)=5*16+5(十进制) 类型:数据都必须有类型 boolean (8bit,不定的)只有true和false两个值 char 16bit, 0~2^16-1 (2^16=6万6) byte 8bit, -2^7~2^7-1 (2^7=128; 注意:两个 ...
本资料里涵盖多线程、面向对象、集合框架、高级特定总结、网络编程总结、接口学习总结、GUI AWT等学习的总结与心得,是学习JAVA的一份很好的资料
验证码生成工具类+验证码验证学习笔记 验证码生成工具类参考自:java图形验证码生成工具类及web页面校验验证码,万分感谢! 效果图: 代码如下: package com.my.demo.session.others; import javax.imageio....
面向对象技术总结 corejava高级特性总结 接口学习总结 异常和内部类 集合框架学习总结 GUI和AWT事件模型 多线程学习总结 输入输出流学习总结 网络编程学习总结
(本文基于GWT提供的开发指南(Developer Guide),所采用的图片,例子均出自GWT,可以认为是GWT的学习笔记) GWT的核心是通过一个编译器(compiler)把Java代码翻译为JavaScript代码,开发期间,用户以类似开发AWT...
本文件包含二级学习笔记,其笔记包含类,包,构造方法,对象,继承,多态,数组,异常与断言,输入与输出以及文件操作,线程控制,AWT事件处理,Swing组件,Applet程序设计等
《Java2核心技术》笔记 作者:叶加飞 加拿大.达内科技 (上海中心) 笔记包含以下文档: 面向对象技术总结.pdf ...GUI和AWT事件模型.pdf 多线程学习总结.pdf 输入输出流学习总结.pdf 网络编程学习总结.pdf
000000_【课程介绍 —— 写在前面的话】_Java学习概述笔记.pdf 010101_【第1章:JAVA概述及开发环境搭建】_JAVA发展概述笔记.pdf 010102_【第1章:JAVA概述及开发环境搭建】_Java开发环境搭建笔记.pdf 010201_【第2...
CoreJava DAY01 Java概述 1 CoreJava DAY02 数据类型和控制结构 10 CoreJava DAY03 数组 20 ...CoreJava DAY18 awt event 146 CoreJava DAY19-20 多线程 154 CoreJava DAY21-22 IO 174 CoreJava DAY23 网络编程 197
新手学习J2ME编程的,内容有:J2ME不用AWT/SWING的原因:移动设备CPU慢,内存小;没有鼠标,只是触控屏幕和简单的按钮;屏幕小,不需要重叠窗口;消息处理机制负荷太重等一些关于J2ME的详细讲述