咨询java swt视频教程用SWT来保存图片

页面导航:
→ 正文内容 swt显示图片
java使用swt显示图片示例分享
这篇文章主要介绍了java使用swt显示图片示例,修改后就可变为图片浏览器,需要的朋友可以参考下
代码如下:import org.eclipse.swt.graphics.GC;import org.eclipse.swt.graphics.Iimport org.eclipse.swt.graphics.Rimport org.eclipse.swt.widgets.Dimport org.eclipse.swt.widgets.S
public class ImagesHelloWorld {
&public static void main(String[] args) {&&Display display = Display.getDefault();&&Shell shell = new Shell();&&Image image = new Image(display, "c://c240b2dcc132c9c6.jpg");&&shell.setText("ImageReader");&&shell.setImage(image);&&Rectangle bounds = image.getBounds();&&shell.setSize(bounds.width + 15, bounds.height +15);&&shell.open();&&GC gc = new GC(shell);&&gc.drawImage(image,5,5);&&shell.layout();&&while (!shell.isDisposed()) {&&&if (!display.readAndDispatch()) {&&&&display.sleep();&&&}&&}&&display.dispose();&}}
您可能感兴趣的文章:
上一篇:下一篇:
最 近 更 新
热 点 排 行
12345678910swt的table中为什么只能显示一条数据
添加记录后,原来的记录被顶掉了,在数据库中还是有记录的!!
09-12-21 &匿名提问 发布
我这是拷贝的,不过也就差不多了,说实话,java的东西太多了。还是要到工作的时候慢慢用的,学好基本语法还有面向对象的思想就行了~~&br&&br&&br& 学习路线&br&一:J2SE 面向对象-封装、继承、多态&br&内存的分析&br&递归&br&集合类、泛型、自动打包与解包、Annotation&br&IO &br&多线程、线程同步 &br&TCP/UDP &br&AWT、事件模型、匿名类&br&正则表达式&br&反射机制&br&&br&2:数据库(Oracle或者MySQL)&br&SQL语句&br&多表连接,内外连接, 子查询等&br&管理表、视图、索引、序列、约束等&br&树状结构存储&br&存储过程、触发器 &br&数据库设计三范式、&br&&br&3:JDBC&br&JDBC基础&br&连接池 &br&树状结构存储与展现&br&DataSource & RowSet &br&JDBC连接Oracle及MySQL&br&&br&&br&4:HTML_CSS_JAVASCRIPT&br&html、css、javascript基础语法&br&JavaScript Form判断 &br&Dom编程基础(事件处理等)&br&JS常用效果如TreeView、下拉联动等&br&JS学习方法 &br&JS调试方法 &br&DreamWeaver初步(建立HTML、Table、Form、CSS)等 &br&&br&5:Servlet & JSP&br&tomcat基础 &br&servlet基础 &br&web.xml配置基础 &br&web application的结构 &br&servlet生命周期 &br&request response等常用方法 &br&ServletContext类 &br&HTTP协议基础(GET POST)&br&Cookie &br&Session &br&Application &br&&br&JSP的几种语法(包括JSTL等)注意在项目中练习,不要拘泥于语法细节而裹步不前。 &br&&br&6:Struts&br&多层架构理论 &br&Model 1 and Model 2 &br&Struts基本概念 &br&MVC&br&Action与业务逻辑类的关系 &br&在Struts与JSP之间传递数据&br&Struts处理流程(控制流) &br&Struts TagLib(了解常用的) &br&JSTL&br&ActionForm &br&字段收集&br&上传文件 &br&类型转换 &br&DTO &br&动态Action Form &br&验证框架&br&ActionForward 转发与重定向 &br&动态生成ActionForward &br&全局与局部的ActionForward &br&Action Forward Scope&br&UnknownActionMapping &br&Action的线程安全 &br&I18N &br&如何切换语言环境&br&Struts异常处理机制 程序处理 自动处理 自定义异常处理器&br&Struts的多模块配置 &br&&br&&br&7:XML&br&(XML/XSL、XSLT/DTD、SCHEMA等基础的概念、关于Java的编程可以暂时扔在一边) &br&&br&8:Hibernate&br&OR Mapping原理 &br&Hibernate基础开发步骤 &br&Hibernate基本接口(重点Session)&br&普通属性映射 &br&关联关系映射 &br&Native SQL &br&inverse lazy cascade &br&继承关系映射 &br&HQL &br&性能优化 一级缓存 二级缓存 查询缓存&br&事务与并发 悲观锁、乐观锁 &br&OpenSessionInView &br&CurrentSession &br&(至于JTA、联合主键、自然主键、动态主键、Any类型 Creteria Queries Intercepter and Event 自定义类型等,可以暂时扔在一边) &br&&br&9:Spring&br&IOC/DI &br&Spring配置&br&Spring架构 &br&AOP及Spring AOP &br&声明式事务(AOP)&br&Spring + Hibernate Spring支持Web &br&Scope &br&(其他的Spring模块对于自学来说可以暂时扔在一边) &br&&br&10:EJB3.0&br&J2EE架构基础(JTA JMS等) &br&EJB基础(地位及基本理论、分类等)&br&Annotation &br&Ant编译与部署EJB &br&Session Bean &br&EJB的依赖注入 &br&Persistence API &br&(可以用JBoss学习EJB3.0)&br&&br&&br&30个目标&br&1.你需要精通面向对象分析与设计(OOA/OOD)、涉及模式(GOF,J2EEDP)以及综合模式。你应该十分了解UML,尤其是class,object,interaction以及statediagrams。&br&  2.你需要学习JAVA语言的基础知识以及它的核心类库(collections,serialization,streams,networking, multithreading,reflection,event,handling,NIO,localization,以及其他)。&br&  3.你应该了解JVM,classloaders,classreflect,以及垃圾回收的基本工作机制等。你应该有能力反编译一个类文件并且明白一些基本的汇编指令。&br&  4.如果你将要写客户端程序,你需要学习WEB的小应用程序(applet),必需掌握GUI设计的思想和方法,以及桌面程序的SWING,AWT, SWT。你还应该对UI部件的JAVABEAN组件模式有所了解。JAVABEANS也被应用在JSP中以把业务逻辑从表现层中分离出来。&br&  5.你需要学习java数据库技术,如JDBCAPI并且会使用至少一种persistence/ORM构架,例如Hibernate,JDO, CocoBase,TopLink,InsideLiberator(国产JDO红工厂软件)或者iBatis。&br&  6.你还应该了解对象关系的阻抗失配的含义,以及它是如何影响业务对象的与关系型数据库的交互,和它的运行结果,还需要掌握不同的数据库产品运用,比如racle,mysql,mssqlserver。&br&  7.你需要学习JAVA的沙盒安全模式(classloaders,bytecodeverification,managers,policyandpermissions,&br&codesigning, digitalsignatures,cryptography,certification,Kerberos,以及其他)还有不同的安全/认证 API,例如JAAS(JavaAuthenticationandAuthorizationService),JCE (JavaCryptographyExtension),JSSE(JavaSecureSocketExtension),以及JGSS (JavaGeneralSecurityService)。&br&  8.你需要学习Servlets,JSP,以及JSTL(StandardTagLibraries)和可以选择的第三方TagLibraries。&br&  9.你需要熟悉主流的网页框架,例如JSF,Struts,Tapestry,Cocoon,WebWork,以及他们下面的涉及模式,如MVC/MODEL2。&br&  10.你需要学习如何使用及管理WEB服务器,例如tomcat,resin,Jrun,并且知道如何在其基础上扩展和维护WEB程序。&br&11.你需要学习分布式对象以及远程API,例如RMI和RMI/IIOP。&br&  12.你需要掌握各种流行中间件技术标准和与java结合实现,比如Tuxedo、CROBA,当然也包括javaEE本身。&br&  13.你需要学习最少一种的XMLAPI,例如JAXP(JavaAPIforXMLProcessing),JDOM(JavaforXMLDocumentObjectModel),DOM4J,或JAXR(JavaAPIforXMLRegistries)。&br&  14.你应该学习如何利用JAVAAPI和工具来构建WebService。例如JAX-RPC(JavaAPIforXML/RPC),SAAJ (SOAPwithAttachmentsAPIforJava),JAXB(JavaArchitectureforXMLBinding),JAXM(JavaAPIforXMLMessaging), JAXR(JavaAPIforXMLRegistries),或者JWSDP(JavaWebServicesDeveloperPack)。&br&  15.你需要学习一门轻量级应用程序框架,例如Spring,PicoContainer,Avalon,以及它们的IoC/DI风格(setter,constructor,inte***ceinjection)。&br&  16.你需要熟悉不同的J2EE技术,例如JNDI(JavaNamingandDirectoryInte***ce),JMS (JavaMessageService),JTA/JTS(JavaTransactionAPI/JavaTransactionService),JMX (JavaManagementeXtensions),以及JavaMail。&br&  17.你需要学习企业级JavaBeans(EJB)以及它们的不同组件模式:Stateless/StatefulSessionBeans,EntityBeans(包含Bean- ManagedPersistence[BMP]或者Container-ManagedPersistence[CMP]和它的EJB-QL),或者 Message-DrivenBeans(MDB)。&br&  18.你需要学习如何管理与配置一个J2EE应用程序服务器,如WebLogic,JBoss等,并且利用它的附加服务,例如簇类,连接池以及分布式处理支援。你还需要了解如何在它上面封装和配置应用程序并且能够监控、调整它的性能。&br&  19.你需要熟悉面向方面的程序设计以及面向属性的程序设计(这两个都被很容易混淆的缩写为AOP),以及他们的主流JAVA规格和执行。例如AspectJ和AspectWerkz。&br&  20.你需要熟悉对不同有用的API和frame work等来为你服务。例如Log4J(logging/tracing),Quartz (scheduling),JGroups(networkgroupcommunication),JCache(distributedcaching), Lucene(full-textsearch),JakartaCommons等等。&br&21.如果你将要对接或者正和旧的系统或者本地平台,你需要学习JNI (JavaNativeInte***ce) and JCA (JavaConnectorArchitecture)。&br&  22.你需要熟悉JINI技术以及与它相关的分布式系统,比如掌握CROBA。&br&  23.你需要JavaCommunityProcess(JCP)以及他的不同JavaSpecificationRequests(JSRs),例如Portlets(168),JOLAP(69),DataMiningAPI(73),等等。&br&  24.你应该熟练掌握一种JAVAIDE例如sunOne,netBeans,IntelliJIDEA或者Eclipse。(有些人更喜欢VI或EMACS来编写文件。随便你用什么了:)&br&  25.JAVA(精确的说是有些配置)是冗长的,它需要很多的人工代码(例如EJB),所以你需要熟悉代码生成工具,例如XDoclet。&br&  26.你需要熟悉一种单元测试体系(JNunit),并且学习不同的生成、部署工具(Ant,Maven)。&br&  27.你需要熟悉一些在JAVA开发中经常用到的软件工程过程。例如RUP(RationalUnifiedProcess)andAgilemethodologies。&br&  28.你需要能够深入了解加熟练操作和配置不同的操作系统,比如GNU/linux,sunsolaris,macOS等,做为跨平台软件的开发者。&br&  29.你还需要紧跟java发展的步伐,比如现在可以深入的学习javaME,以及各种java新规范,技术的运用,如新起的web富客户端技术。&br&  30.你必需要对opensource有所了解,因为至少java的很多技术直接是靠开源来驱动发展的,如java3D技术。
请登录后再发表评论!/dugang/archive//1858478.html
  AWT是Abstract Window Toolkit(抽象窗口工具包)的缩写,是SUN专门针对Java GUI编程提供的最早的也是最初的开发工具包,用来建立和设置Java图形用户界面,这个工具包提供了一套与本地图形界面交互的接口。AWT 中的图形函数与操作系统所提供的图形函数之间有着一一对应的关系(peers)。也就是说,当我们利用 AWT 来构件图形用户界面的时候,实际上是在利用操作系统所提供的图形库。不过由于不同操作系统的图形库所提供的功能是不完全一样,所以在一个平台上存在的功能在另外一个平台上则可能不存在。这就导致一些应用程序在测试时界面非常美观,而一旦移植到其他的操作系统平台上后就可能变得“惨不忍睹”。为了实现Java语言&一次编译,到处运行&,AWT
不得不通过牺牲功能来实现其平台无关性,其所提供的图形功能被定格为各种通用型操作系统所提供的图形功能的交集。由于AWT 是依靠本地方法来实现其功能的,所以通常把AWT组件称为重量级组件。
  AWT是Sun不推荐使用的工具集。然而它在许多非桌面环境如移动或嵌入式设备中有着自己的优势:
1.更少的内存:对运行在有限环境中的GUI程序的开发,是合适的。
2.更少的启动事件:由于AWT组件是本地由操作系统实现的。绝大多数的二进制代码已经在如系统启动的时候被预装载了,这降低了它的启动事件。
3.更好的响应:由于本地组件由操作系统渲染。
4.成熟稳定的:能够正常工作并很少使你的程序崩溃。
然而事物具有两面性,AWT也有着许多缺点:
1.更少组件类型:表和树这些重要的组件缺失了。它们是桌面应用程序中普遍使用的。
2.缺乏丰富的组件特征:按钮不支持图片。
3.无扩展性:AWT的组件是本地组件。JVM中的AWT类实例实际只是包含本地组件的引用。唯一的扩展点是AWT的Canvas组件,可以从零开始创建自定义组件。然而无法继承和重用一个已有的AWT组件
  Swing 是在AWT的基础上构建的一套新的图形界面系统,是JFC(Java Foundation Class)的一部分,是试图解决AWT缺点的一个尝试。它提供了AWT 所能够提供的所有功能,并且用纯粹的Java代码对AWT 的功能进行了大幅度的扩充。所有的swing组件实际上也是AWT的一部分。Swing 对基于对等体的组件使用的术语是重量级,对于模拟的组件使用的术语是轻量级。实际上,Swing 可以支持在一个 GUI 中混合使用重量级组件和轻量级组件,不过一般将其称之为轻量级组件。
& & &Swing是三者中最强大的GUI工具集,同时它也是SUN推荐使用的GUI工具集,通过几个本版的修改和扩展后,现在的swing在某些领域有着明显优势:
1.丰富的组件类型:Swing提供了非常广泛的标准组件。这些组件和SWT一样丰富。基于它良好的可扩展性,除了标准组件,Swing还提供了大量的第三方组件。许多商业或开源的Swing组件库在开发多年后都已经可以方便地获取了。
2.丰富的组件特性:Swing不仅包含了所有平台上的特性,它还支持根据程序所运行的平台来添加额外特性。Swing组件特性遵循特定原则,易于扩展,因此能够提供较SWT和AWT更多的功能。
3.好的组件API模型支持:Swing遵循MVC模式,这是一种非常成功的设计模式。它的API成熟并设计良好。经过多年的演化,Swing组件APIs变得越来越强大,灵活和可扩展。它的API设计被认为是最成功的GUI API之一。较之SWT和AWT更面向对象,也更灵活而可扩展。
4.标准的GUI库:Swing和AWT一样是JRE中的标准库。因此,你不用单独地将它们随你的应用程序一起分发。它们是平台无关的,不用担心平台兼容性。
5.成熟稳定:由于它是纯Java实现的,不会有SWT的兼容性问题。Swing在每个平台上都有相同的性能,不会有明显的性能差异。
6.可扩展和灵活性。Swing完全由Java代码实现。Swing基于MVC的结构使得它可以发挥Java作为一门面向对象语言的优势。它提供了许总体上良好的性能。
  当然,swing也有着许多不足之处:比如swing比AWT和SWT更多的内存消耗。Swing自己实现了所有组件。因此,它在运行时装载了大量的类。而在运行时Java在堆上创建小的对象导致了额外的堆空间消耗。而许多小的对象难以有效地被垃圾回收机制回收。因此,Swing应用程序通常会因无法及时回收冗余的对象而导致性能下降。
  SWT是Standard WidgetToolkit的缩写,是由IBM构建的一个新的GUI库,其目的在于尝试彻底解决AWT和swing带来的诸多问题,提供比AWT更为丰富的组件集。SWT和swing一样痛Java代码模拟了一些平台缺失的组件,不过与 AWT 的概念相比,SWT 是一个低级的 GUI 工具包,在构建SWT的过程中,构建者从 AWT 和 Swing 实现中学习了很多经验,他们试图构建一个集二者优点于一体而没有二者的缺点的系统。因此SWT可以说是AWT与swing的融合体。
  SWT有如下优势:
1.丰富的组件类型:SWT提供了种类繁多的组件,从基础组件如按钮和标签到高级的表格和树。
2.相对的丰富组件特性:尽管SWT也遵循最大公倍数原则,它采用模拟的方式重新设计了对更多组件特性的支持。所以同AWT相比,它有着相对丰富的组件特性。
3.更快的响应时间:基于和AWT同样的原因,SWT组件包装了本地组件,由操作系统实现渲染。操作系统通常对渲染处理做了优化,保存GUI二进制代码为标准库,减少了内存的使用,提高了响应性能。
4.更少的内存消耗。
不足之处:
1.不在JRE的标准库中。因此必须将它和程序捆绑在一起,并为所要支持的每个操作系统创建单独的安装程序。
2.不够成熟和稳定。SWT因其设计上的一些缺陷,如资源管理,Windows友好等,被认为是不稳定的。它可以在Windows上表现得很好,但在其他操作系统上,它经常是不稳定且容易崩溃的。这很大程度上是因为它把资源管理交给开发者来处理,而并不是所有的开发人员能够正确地处理这些。
3.在非Windows平台下的性能不高4.无Look AndFeel 支持。和AWT同样的原因。
4.不可扩展。
  综上所述,在对GUI编程时的工具包选择得根据具体项目决定:若是需要用低内存来运行GUI程序,使用AWT会是一个不错的选择,而如果只考虑平台的移植性可优先考虑SWT/swing
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:62242次
排名:千里之外
原创:27篇
转载:45篇
(1)(3)(1)(3)(2)(2)(8)(3)(2)(7)(1)(3)(2)(1)(2)(3)(5)(1)(1)(1)(1)(6)(4)(3)(1)(4)(1)(1)(2)(1)定制SWT/RCP界面:如何编写一个漂亮的SWT/RCP界面 - Java教程 - 编程入门网
定制SWT/RCP界面:如何编写一个漂亮的SWT/RCP界面
简介:本文介绍如何利用 SWT/RCP 中的功能,编写漂亮的 SWT/RCP 界面。文章开始介绍了 ECLIPSE 中关于图形的一些基本知识,通过定义图形来设置 SWT/RCP 界面的外形。然后介绍如何通过图片来定义图形外形,通过图片来设置界面背景。最后介绍 RCP 中如何继承相关接口,定义界面外形和背景的。
Java 自从 1995 年发布以来,其图形界面一直为世人所诟病。无论是早期的 AWT,还是后来的 Swing 应用程序不能像本地应用程序一样执行,外观也不一样,响应的速度也不快。SWT 吸收了 AWT 和 Swing 实现的最好的部分 : 当可以得到本地组件时调用本地实现,当不能得到本地组件时使用 Java 实现。这就同时保证了与本地窗口部件相当的外观,又提高了响应速度。
目前 SWT 已被广泛应用于开发 JAVA 富客户端,但是基于 SWT/RCP 的应用程序界面都是经典的 Eclipse 界面风格 : 蓝色的标题栏、灰色的工具栏和状态栏、四方形的视图和编辑器、还是四方的控件,这些界面过于朴素,缺乏吸引力。
其实我们可以基于 SWT/RCP,编写漂亮 GUI 的界面。自定义窗口的形状,通过图片背景来美化 SWT/RCP 窗体界面。窗体可以是多边形,如矩形、圆形、以及这些形状的叠加。按钮控件也可以任意多边形。
下图是经典的 Eclipse 风格界面和美化后界面的比较:左面是一个经典的 SWT/RCP 窗体界面;右面是美化后的窗体,黑色的外框由一个矩形和一个圆形的叠加而成、圆形的播放按钮、圆弧形的退出按钮、不规则的放映视图等。
图 1. 经典窗体与美化后窗体的比较
本文首先介绍了 Eclipse 中图形和界面的一些基本知识, 如何定义多边形,如何把 SWT 的窗体设置成多边形,以及如何定制多边形的 SWT 窗口和控件;然后介绍如通过图片来获得多边形外形,如何使用图片来设置 SWT 窗体背景。最后通过剖析 Eclipse 的工作台(工作台就是 Workbench)的启动运行过程,介绍如何编写 RCP 的定义多边形窗口,以及窗体上控件的多边形外形。
SWT 图形和窗体基础
在开始介绍之前,我们先熟悉一下如何创建一个图形的。SWT 是通过 org.eclipse.swt.graphics.Region来定义图形的。 我们可以通过定义一个整型数组来定义各个点,这些点连接在一起就是一个图形。坐标的顺序是先 X 轴后 Y 轴,逆时针连接的。 例如下面定义的 4 个点数组 int[] rect = {Xa, Ya, Xb, Yb, Xc, Yc, Xd, Yd},A-&B-&C-&D 连接而成就是一个矩形。int[] rect2 = {Xe, Ye, Xf, Yf, Xg, Yg, Xh, Yh},E-&F-&G-&H 连接而成就是另外一个矩形。把这两个矩形叠加在一起就是一个多边形的外形。
图 2. 多边形

我要回帖

更多关于 java swt swing 的文章

 

随机推荐