第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图形编程1-AWT.chm`和`java图形编程2-Swing.chm`这两个文档,你可以深入学习AWT和Swing的使用方法,了解组件的创建、布局管理、事件处理、模型-视图-控制器模式,以及如何利用Swing的高级功能来构建复杂的...
本学习笔记旨在深入理解J2SE的基础概念、核心特性以及实际应用。 一、Java基础 Java是一种面向对象的编程语言,由Sun Microsystems(现已被Oracle收购)于1995年发布。它的主要特点包括跨平台性(Write Once, Run ...
### Java学习笔记——基础知识详解 #### 一、Java基本数据类型及内存占用 Java作为一种广泛使用的编程语言,其基础数据类型对于理解程序的行为至关重要。Java提供了八种基本数据类型,分为数值型、字符型和布尔型...
这个压缩包中包含的"java学习笔记JDK6课件和课本代码"是学习JDK 6.0的重要参考资料,可以帮助你深入理解Java编程的核心概念和实践技巧。 1. **Java基础**:Java是一种面向对象的编程语言,它的基础包括类、对象、...
本压缩包"java学习笔记JDK6课件和课本代码.rar"中包含的资源,旨在帮助学习者深入理解Java编程,并掌握JDK 6的关键特性。以下是一些主要的知识点: 1. **基础语法**:Java的基础语法包括变量声明、数据类型、运算符...
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 JDK 6 学习笔记》这本书很可能是为了帮助读者深入理解和掌握这个版本的Java编程语言及其开发环境。以下是一些关键知识点的详细说明: 1. **自动装箱与拆箱**:Java 6中引入了自动装箱和拆箱功能,使得基本...
学习并熟练掌握AWT和Swing,可以让Java程序员创建出具有吸引力和高效交互的图形用户界面,从而提高软件的用户体验。在实际开发中,可以根据需求选择使用AWT的原生感观或Swing的跨平台一致性,以达到最佳的设计效果。
全是自己编写的,没问题,是个学习java awt的好笔记。是个非抢号的一个学习资料
这份"java学习笔记及源代码"的资源,显然旨在帮助初学者或有经验的开发者深入理解和实践Java编程。以下是对这个主题的详细阐述: 一、Java语言基础 1. 类与对象:Java的核心是面向对象编程,类是对象的模板,对象是...
### Java学习笔记知识点总结 #### 第一章:Java语言入门 - **1.1 Java的诞生** Java由Sun Microsystems公司于1995年推出的一种可移植、面向对象的编程语言。最初的设计目标是为消费电子产品提供一种通用编程语言...
Java OpenGL(JOGL)学习笔记 在学习 JOGL 时,我们需要了解图形显示器是如何工作的。图形显示器是一个由许多像素点组成的绘图区域,图形系统的核心是一个魔法画笔,这支画笔能以非常快的速度移动到一个确定的像素...
(二)面向对象技术总结.pdf (三)corejava高级特性总结 (四)接口学习总结 (五)异常和内部类 (六)集合框架学习总结 (七)GUI和AWT事件模型 (八)多线程学习总结 (九)输入输出流学习总结 (十)网络编程学习总结
【Java学习笔记全程详解】 Java作为一种广泛应用于企业级开发、移动应用、大数据处理等领域的编程语言,其学习过程涵盖了许多核心概念和技术。这份"我的Java学习笔记"详细记录了作者在学习Java过程中积累的心得体会...
【JAVA入门实例代码及学习笔记】是一份针对初学者精心准备的资料,涵盖了JAVA语言的基础到进阶的各种重要概念和实战技巧。这份资料通过实际的代码示例和详细的学习笔记,帮助初学者深入理解JAVA编程。 1. **面向...
JavaSE6学习笔记是针对Java初学者和进阶者的一份宝贵资料,由知名讲师李兴华的培训课堂笔记汇编而成。这份笔记全面、详细地涵盖了Java SE 6版本的核心概念和技术,对于理解Java编程语言的基础以及进阶特性具有重要...
这篇2010年6月24日的博客文章“Java代码笔记”提供了一个使用JDBC(Java Database Connectivity)与GUI(图形用户界面)AWT(Abstract Window Toolkit)实现分页操作的实例。接下来,我们将详细探讨这个知识点。 ...
这份"Java学习笔记JDK6.rar"压缩包显然是一份针对初学者或希望深入理解Java基础的开发者的学习资料,它涵盖了JDK6版本的相关知识。 在JDK6中,有几个关键的知识点值得深入探讨: 1. **基础语法**:Java的基础语法...