`
空空儿
  • 浏览: 134985 次
  • 性别: Icon_minigender_2
  • 来自: 杭州
社区版块
存档分类
最新评论

Swing渲染基本原理<一>

    博客分类:
  • J2SE
阅读更多

   利用Swing渲染,Swing应用程序绘制了在显示器上出现的用户界面。主要包括在事件、绘制 、渲染、双缓冲、线程。
    事件:Swing接收和处理事件的方式是理解线程如何在Swing内部交互及理解应用程序如何与Swing和AWT事件交互的关键。在Java中,事件可以来自本地系统,如一个可见的窗体或键盘输入。也可也是Java本身,如应用程序产生的请求。所有的时间都是放在一个事件队列中的,Java.awt.EventQueue负责取出事件并来派发事件,它的机制是一个单独的线程管理,叫做事件派发线程。
   绘制:Swing中的绘制是应用程序用来更新显示的过程,它也是由事件队列所受的影响来影响Swin组件的paint()和paintComponent()来绘制。是通过Swing或AWT库自身发起一个绘制请求,或应用程序代码发起这样子的一个请求。在这样子的情况下发起的请求,应用程序代码知道,基于一些内部状态的改变,显示也应该改变。
   组件中发起绘制方法的主要分为两类:异步请求和同步请求。

    异步绘制请求的工作原理 告诉Swing需要更新内容,让Swing处理了编排这些请求的细节,并适当的组合这些请求。所有的异步请求都是repaint()得变体,它也可以分为两类:整个组件的更新<Component.repaint()>和指定区域的更新<Component.repaint(int x,int y,int width,int height)>。

repaint()的底层告诉Swing必须更新整个组件区域。如果这个组件是一个容器,后续的paint()方法的调用还会导致每个子组件更新自身。重绘请求可以说是合并,例如,请求一个重绘,而在对垒中已经有一个还没有运行过的重绘请求,那么第二个请求将被忽略,因为已经由最早的那个请求执行了。
  第二个方法和repaint()一样,只是重新绘制一个组件的部分区域
  一个简单的repaint()等同于repait(0,0,getWedth(),getHeight()).

   同步绘制请求:在处理同步绘制时必须小心处理,它必须在事件派发线程中进行,并且代码必须在正确的线程中以便正确的时间发生,如果不是正确的线程,结果也会不对。
    它也有两个方法几个方法,
    JComponet.paintImmediately(int x, int y,int w, int h) 和 JComponent.parintImmediately(Rectangle r)
  这两个方法是相同的,都是指定需要更新的区域。要强制一个组件内容同步绘画,paintImmediately()是唯一需要的方法。用它来告诉组件指定区域更新,内部是调用适当的paint();有几个缺点是不止必须在派发事件线程中,还得立刻执行paint(),所以意味着它是没有合并绘画请求的。
  还有一个是夜是Compont.paint(Graphics),正常发展情况下是不会调用的paint()的。但是在特定的情况下会调用,例如当要把一个组件渲染到一个图像,而不是它在Swing窗口中通常的位置。

      
1
3
分享到:
评论

相关推荐

    精通Java:JDK、数据库系统开发Web开发(实例代码)

    Java异常处理机制&lt;br&gt;第8章 Java反射机制&lt;br&gt;第9章 数据结构与集合类&lt;br&gt;第3篇 图形用户界面&lt;br&gt;第10章 Java Swing(上)&lt;br&gt;第11章 Java Swing(下)&lt;br&gt;第12章 Applet网页小程序&lt;br&gt;第13章 图形编程&lt;br&gt;第14章 ...

    java JDK5.0 实例开发宝典

    类型基本操作&lt;br&gt;2. 面向对象的操作 适配器模式 单列模式 工程模式 组合模式。。。&lt;br&gt;3. 精确计算数字和随机数字&lt;br&gt;4. java.util.package高级使用 List Set collection..&lt;br&gt;5. String高级操作 包括密码的使用 ...

    学员考试管理系统

    &lt;br&gt;一:开发环境介绍 &lt;br&gt; 开发语言 JAVA&lt;br&gt; 开发工具 JBulider 2006&lt;br&gt; 数据库 SQL SERVER 2000&lt;br&gt; 运行环境 JDK 1.4以上.&lt;br&gt; 操作系统 Windows 2000/xp/2003 &lt;br&gt;Windows Vista /Linux Unix/Mac等操作...

    java socket 通信程序

    Java远程消息传送器&lt;br&gt;&lt;br&gt;功能要求:&lt;br&gt;&lt;br&gt;桌面窗口应用程序;&lt;br&gt;&lt;br&gt;包括多个发送端和一个接收端;...&lt;br&gt;&lt;br&gt; &lt;br&gt;&lt;br&gt;技术要点:&lt;br&gt;&lt;br&gt;Socket/TCP/IO/Thread/AWT/SWING&lt;br&gt;开发环境:idea

    The Java Developers Almanac

    一大堆java基础类的小例子&lt;br&gt;java.applet [8 examples] &lt;br&gt;java.awt [78 examples] &lt;br&gt;java.awt.datatransfer [3 examples] &lt;br&gt;java.awt.dnd [3 examples] &lt;br&gt;java.awt.event [8 examples] &lt;br&gt;java.awt.font ...

    java多人聊天室

    涉及 JAVA GUI Socket 且对JAVA的swing组件进行了扩展使用&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;注:语音聊天部分还未完成,还需要些时间:)&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;1.运行服务器端需要你的机器上...

    Java词典 Java Dictionary

    &lt;br&gt;帖上来,给有相同想法的人,也给swing初学者。&lt;br&gt;上班,没多少时间写,但我会不断实现一些功能,把这JDic词典完善。&lt;br&gt;更希望有人能一起实现,所以我把工程包给传上来了。&lt;br&gt;其中也有打好包的windows,linux...

    Java 2核心技术 卷II:高级特性(第七版).part3

    &lt;br&gt;&lt;br&gt;&lt;br&gt;译者序&lt;br&gt;前言&lt;br&gt;第1章 多线程&lt;br&gt;第2章 集合&lt;br&gt;第3章 网络&lt;br&gt;第4章 数据库编程&lt;br&gt;第5章 分布式对象&lt;br&gt;第6章 高级Swing&lt;br&gt;第7章 高级AWT&lt;br&gt;第8章 JavaBean构件&lt;br&gt;第9章 安全&lt;br&gt;第10章 国际化...

    Java 2核心技术 卷II:高级特性(第七版).part2

    &lt;br&gt;&lt;br&gt;&lt;br&gt;译者序&lt;br&gt;前言&lt;br&gt;第1章 多线程&lt;br&gt;第2章 集合&lt;br&gt;第3章 网络&lt;br&gt;第4章 数据库编程&lt;br&gt;第5章 分布式对象&lt;br&gt;第6章 高级Swing&lt;br&gt;第7章 高级AWT&lt;br&gt;第8章 JavaBean构件&lt;br&gt;第9章 安全&lt;br&gt;第10章 国际化...

    Java 2核心技术 卷II:高级特性(第七版).part1

    &lt;br&gt;&lt;br&gt;&lt;br&gt;译者序&lt;br&gt;前言&lt;br&gt;第1章 多线程&lt;br&gt;第2章 集合&lt;br&gt;第3章 网络&lt;br&gt;第4章 数据库编程&lt;br&gt;第5章 分布式对象&lt;br&gt;第6章 高级Swing&lt;br&gt;第7章 高级AWT&lt;br&gt;第8章 JavaBean构件&lt;br&gt;第9章 安全&lt;br&gt;第10章 国际化...

    swingx包

    Readme - SwingLabs SwingX Project - http://swingx.dev.java.net&lt;br&gt;&lt;br&gt;&lt;br&gt;SwingX is a library of components and utilities extending the Java Swing library; read more at our website, &lt;br&gt;...

    OpenSwing开发包及源码

    限制可输入的最大长度&lt;br&gt;JTreeComboBox 带有树形结构的下拉列表&lt;br&gt;com.sunking.swing.print.* &lt;br&gt;注意:&lt;br&gt;一个打印模板&lt;br&gt;最近发现有人在用OPENSWING的时候,把package及author等信息全部删除了. 请这部份人及时...

    Prentice Hall - Core Java 2 Vol2 ed5 ~.pdf

    security to Swing.&lt;br&gt;Cay Horstmann identifies the problems experienced Java platform&lt;br&gt;developers encounter most often, and delivers insightful, expert-level&lt;br&gt;guidance for addressing them-...

    面向对象初学者必须掌握的几种设计模式

    观察者模式 Observer:Swing中的事件模型&lt;br&gt;工厂模式 Factory:在JDK中遍地都是,比如JDBC、JNDI等,是学习Spring的基础&lt;br&gt;命令模式 Command:Struts框架的基石&lt;br&gt;单例模式 Singleton:最简单的设计模式,大量...

    java C/S架构《酒店管理系统》(含源码,数据库,设计说明)

    接口&lt;br&gt;5.Swing事件处理&lt;br&gt;6.实现了类似QQ的滑动菜单&lt;br&gt;7.程序读取画面&lt;br&gt;&lt;br&gt;运用到的东西我就不再说了。压缩包中有全套的说明文档(包括需求说明,详细设计说明,数据库设计文档,用户手册)。数据库也在包里....

    Swing星际争霸 游戏源码实例demo,仅供开发学习交流.zip

    &lt;name&gt;org.eclipse.jdt.core.javabuilder&lt;/name&gt; &lt;arguments&gt; &lt;/arguments&gt; &lt;/buildCommand&gt; &lt;/buildSpec&gt; &lt;natures&gt; &lt;nature&gt;org.eclipse.jdt.core.javanature&lt;/nature&gt; &lt;/natures&gt; &lt;/projectDescription&gt;

    JTatoo Swing LookAndFeel 外观

    &lt;br&gt;有以下十种风格可以设置:&lt;br&gt;javax.swing.UIManager.setLookAndFeel("com.jtattoo.plaf.smart.SmartLookAndFeel");&lt;br&gt;javax.swing.UIManager.setLookAndFeel("com.jtattoo.plaf.mcwin.McWinLookAndFeel");&lt;br&gt;...

    Swing跨平台外观littleluck.zip

    它的名字的灵感来源于我喜欢的一首歌小幸运,在这里把"它"献给所有仍在Swing奋斗的朋友。 功能介绍 窗体使用半透明阴影边框 解决透明窗体字体渲染问题 扁平化界面 ...

    eRed个人助理V0.1开源版

    &lt;br&gt;3.eRedPMIS开发环境&lt;br&gt;操作系统:WinXP &lt;br&gt;JDK:1.6+ &lt;br&gt;开发工具:NetBeans 6.0(M9) &lt;br&gt;数据库:Access[不限]&lt;br&gt;4.eRedPMIS终极目标&lt;br&gt;封装出一个支持Swing桌面编程的基础平台或者说是提供一个能满足商业...

Global site tag (gtag.js) - Google Analytics