开发者社区> 嗯哼9925> 正文

[翻译]Java Swing(1)

简介:
+关注继续查看
前言

第2版的<<Java Swing>>涵盖了jdk1.3和jdk1.4的所有特性。AWT刚开始时是JDK的一部分,但对于复杂的用户接口的支持不够,而且它还有移植性问题。它严重依赖运行平台的本地用户接口组件,而在这些组件行为的差异方面的隐藏方面有问题。在jdk1.1里引入了新的更有效的事件模型。Swing在三方面改进了AWT.第一,Swing不依赖于运行平台的本地组件。它完全用Java编写并创建它拥有的组件。因为组件不会从运行平台继承奇怪的行为这就解决了大部分移植性问题。第二,因为Swing完全控制组件,组件在屏幕上的外观,这给了你控制你的应用程序外观的更多控制权。你可以选择一些内建的“外观样式”,或者你可以创建你自己的外观样式。这叫做“可插拔外观样式”(PLAF)。第三,Swing清晰地分离开组件显示的数据(模型)和实际显示(视图)。这意味着组件是极其灵活的。这使得修改组件来显示原来设计中没预想过的新的数据或者在不引起底层数据的混乱的情况下改变一个组件的外观和行为变得简单。

这本书深入讨论了组件背后的模型—代理机制和所有的数据模型。当一个应用程序需要和组件的默认行为根本不同的东西时对模型的理解就很重要了。例如,如果你需要一个显示不同数据类型的组件或者一个以非标准方式组织数据的组件。

主要的Swing类包含在以下包中:1)javax.accessibility  为使用标准用户接口有困难人提供支持的类 2)javax.swing 大量Swing组件 3)绘制组件边上的奇特的边框的类 4)javax.swing.colorchooser 为JColorChooser组件提供支持的类 5)javax.swing.event Swing事件

6)javax.swing.filechooser 为JFileChooser组件提供支持的类 7)javax.swing.plaf 支持PLAF的类,包括实现Metal和Multi L&Fs的类(Windows和Motif L&Fs的实现在com.sun.java.swing.plaf里,Macintosh在com.apple.mrj.swing)8)javax.swing.text 为文本组件提供支持的类(象JTextField,这些组件在javax.swing包里)。9)javax.swing.text.html和javax.swing.text.rtf   html文件和微软RTF文档的编辑工具。Text.html有一个子包,parser,这里面有解析HTML的工具 10)javax.swing.tree 为JTree组件提供支持的类(JTree本身在javax.swing) 11)javax.swing.undo 实现撤消操作的类。

 

第1章 Swing简介

      sun把Swing定义为一组用户自定义化的图形组件,这些组件的外观样式可以在运行时改变。实际上,Swing含义远不只此。它是Sun创建的用于java企业级应用开发的下一代GUI工具集。这就意味着程序员可以使用Swing和一组功能强大的组件来创建大型java应用程序。还可以方便地扩展或者修改这些组件来控制它们的外观和行为。

       基本类库是用来帮助程序员使用java创建企业级应用的一组库。JFC除了包括Swing外,还包括AWT,Accessibility API, 2D API,并加强了对拖放功能的支持。

 

Swing是建立在核心AWT库之上。Swing并不包括任何平台相关(本地)代码,你可以在任何实现jdk1.1.5以上的平台或虚拟机上发布Swing。

 

Swing引进了一个Action类,这使得协调GUI组件和它们的功能简单化。尽管本身没有定义大量事件,Swing却极其依赖于AWT1.1的事件处理机制。每一个Swing组件还包括一些外在属性。这是因为Swing组件和JavaBeans规范有联系。这就意味着可以把Swing组件引进到各种GUI构建工具中,这对可视化编程来说很有用处。

Swing的特性有:1)可插拔的外观样式。Swing允许用户在运行时改变外观样式而不需要关闭应用程序。2)轻量级组件 这是指组件不依赖于本地的对等组件来渲染它们。而是它们使用简单的图形元素来绘制自身甚至允许部分透明。而AWT组件是“重型组件”。轻型组件使用Graphics对象的绘图元素(象drawLine(),fillRect()等)来渲染自身。一般在包含它们的顶层重型组件表面渲染自身。绝把部分Swing组件是轻型组件,只有一些顶层容器不是。这种设计使得程序员可以在运行时绘制应用程序的外观。而且,Swing组件支持组件行为的简单修改。例如,你可以告诉几乎所有Swing组件是否接受或失去焦点,怎样处理键盘输入。

 

3)Swing有各种新组件,象table,tree,slider,spinner,progress bar,internal frame和文本组件。支持边框修饰物的替换。可以有tooltip.可以绑定键盘事件到组件上。对渲染你的自定义轻型组件有额外的除错支持。

 

Swing使用MVC模式(模型—视图—控制器)作为每个组件背后的设计基础。MVC把GUI组件分成三部分,每一部分在组件行为中扮演重要位置。

模型:模型保存了各个组件的状态数据。对于不同类型的组件有不同的模型。例如,一个scrollbar组件的模型可能包含调整条的当前位置,最大/最小值,调整条的宽度。一个菜单可能只单单包含用户可以选择的菜单项的列表。不管组件在屏幕上如何绘制这些信息是不变的。模型数据一般和组件的可视化表示独立开。

视图:视图涉及你在屏幕上如何看到组件。例如,几乎所有窗体都在顶部有一个标题栏。然而,在Mac Os中,标题栏在左边,而在Windows平台却在右边。

控制器:这是决定组件接口如何和事件交互的用户接口部分。

 

       Swing实际上使用一个MVC模式的简化版,叫做模型—代理模式。这个模式把视图和控制器合进一个元素----UI代理中,这个代理在屏幕上绘制组件并处理GUI事件。

 

       每一个Swing组件有一个模型和UI代理。模型维护组件的状态信息。UI代理维护如何在屏幕上绘制组件的信息。模型和UI代理的分离有很多好处。MVC模式的一个特别的方面就是一个模型可以对应多个视图。例如,如果你想在一个饼图和一个表格中显示同样的数据,你可以在同一个数据模型基础上用两个视图来显示。

 


本文转自Phinecos(洞庭散人)博客园博客,原文链接:http://www.cnblogs.com/phinecos/archive/2006/08/13/475587.html,如需转载请自行联系原作者

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
如何设置阿里云服务器安全组?阿里云安全组规则详细解说
阿里云安全组设置详细图文教程(收藏起来) 阿里云服务器安全组设置规则分享,阿里云服务器安全组如何放行端口设置教程。阿里云会要求客户设置安全组,如果不设置,阿里云会指定默认的安全组。那么,这个安全组是什么呢?顾名思义,就是为了服务器安全设置的。安全组其实就是一个虚拟的防火墙,可以让用户从端口、IP的维度来筛选对应服务器的访问者,从而形成一个云上的安全域。
18644 0
阿里云服务器如何登录?阿里云服务器的三种登录方法
购买阿里云ECS云服务器后如何登录?场景不同,阿里云优惠总结大概有三种登录方式: 登录到ECS云服务器控制台 在ECS云服务器控制台用户可以更改密码、更换系.
27782 0
阿里云服务器如何登录?阿里云服务器的三种登录方法
购买阿里云ECS云服务器后如何登录?场景不同,大概有三种登录方式:
12991 0
阿里云服务器安全组设置内网互通的方法
虽然0.0.0.0/0使用非常方便,但是发现很多同学使用它来做内网互通,这是有安全风险的,实例有可能会在经典网络被内网IP访问到。下面介绍一下四种安全的内网互联设置方法。 购买前请先:领取阿里云幸运券,有很多优惠,可到下文中领取。
21964 0
阿里云服务器ECS登录用户名是什么?系统不同默认账号也不同
阿里云服务器Windows系统默认用户名administrator,Linux镜像服务器用户名root
15336 0
阿里云服务器端口号设置
阿里云服务器初级使用者可能面临的问题之一. 使用tomcat或者其他服务器软件设置端口号后,比如 一些不是默认的, mysql的 3306, mssql的1433,有时候打不开网页, 原因是没有在ecs安全组去设置这个端口号. 解决: 点击ecs下网络和安全下的安全组 在弹出的安全组中,如果没有就新建安全组,然后点击配置规则 最后如上图点击添加...或快速创建.   have fun!  将编程看作是一门艺术,而不单单是个技术。
20006 0
+关注
4716
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
JS零基础入门教程(上册)
立即下载
性能优化方法论
立即下载
手把手学习日志服务SLS,云启实验室实战指南
立即下载