动态网站制作指南 [  QQ表情  ]
[ 投票调查 ]
[ 企业邮箱 ]
[ 网站空间 ]
网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
ASP源码 | .Net源码 | PHP源码 | JSP源码 | JAVA源码 | CGI源码 | VB源码 | C++源码 | Delphi源码 | PB源码 | VF源码 | 汇编 | 服务器
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > Java教程
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
网络编程:ASP教程,ASP.NET教程,PHP教程,JSP教程,C#教程,数据库,XML教程,Ajax,Java,Perl,Shell,VB教程,Delphi,C/C++教程,软件工程,J2EE/J2ME,移动开发
文章搜索服务
邮件订阅
输入你的邮件地址,
你将不会错过任何关于:
[ Java教程 ]的信息

本月文章推荐
.Java还能走多远 四大趋势决定前景.
.理解包(package)的基本概念.
.J2ME学习笔记(1)—平台介绍及简单.
.继承:重新使用接口.
.一个体现Java接口及工厂模式优点.
.Sun授权ASEC-Java培训中心名录.
.应用Rational 工具简化基于J2EE的.
.信息系统中用Java访问SQLServer.
.Bean和Servlet的企业应用.
.java 多态与抽象工厂-----------.
.Weblogic6.0安装及配置.
.关于java中字符编码的一点心得,.
.java辨析(1):==和Equal.doc.
.JAVA对象序列化保存为XML文件的工.
.Java学习:解决J2ME中的内存泄漏.
.JBuilder4入门(下).
.花二十分钟教你Ruby快速入门.
.Java 理论与实践: 良好的内务处理.
.记录log日志文件的工具类.
.Java 虚拟机结构基础研究之二.

用 JFC/Swing 将可访问性构建到您的 Java 应用程序中

发表日期:2008-1-5 |



  所有 Java 应用程序对于残疾人士都应该是可访问的。用 GUI 应用程序实现这一点时需要格外注重。本文向您展示了如何使用基于 JFC/Swing 的可访问性工具箱事半功倍地实现最高级别的可访问性。
  大多数基于 GUI 的软件设计都基于这一假设:即用户可以清楚地看到屏幕并且可以有效地使用鼠标选择图形用户界面(GUI)上的选项。对于许多残疾人士,尤其是那些视力和运动控制受损的人,这个假设是有问题的。1998 年,美国康复法案(Rehabilitation Act)经过修改
  以确保残疾人可以访问政府使用的电子和信息技术产品。因此,许多 IT 企业已经开始采用可访问性指导原则作为其整个 GUI 设计标准的一部分。自从美国康复法案修正案通过以后,可访问性也成为商业软件设计中日益重要的问题,从而导致了 Java 平台的一些更改和添加。
  本文有助于您快速了解一些联邦政府的可访问性要求,并且也有助于您使用 JFC/Swing 构建满足那些要求的 GUI。我开发了两个基于 Swing 的工具箱来辅助实现可访问性功能;这两个工具箱如下:
  
  com.ibm.wac.AccessibilityUtils:一组可重用于任何 Swing GUI 的通用实用程序
  
  
  com.ibm.wac.demos.AccessibilityDemo1:演示应用程序,它包括一组更特定于应用程序的实用程序,这些实用程序可重用于特定 GUI 中的类似结构
  尽管您将在 AccessibilityDemo1 中看到的许多方法都是为单个应用程序创建的,但很轻易使它们一般化以支持多个 GUI。
  因为 JFC/Swing 是本文中讨论的所有 GUI 开发的基础,所以假定您熟悉使用 Swing 编程的基本概念。并进一步假定您正在使用 Java 版本 1.3.1 或更新的版本,因为我们将在这里讨论的部分方法在 Java 平台的较早版本中不可用。
  重新审阅您的 GUI
  因为大多数 GUI 面向视力正常的人,所以对于弱视者或盲人,它们通常是作用有限的或无用的。同样,大多数 GUI 设计依靠鼠标进行导航,对于运动和视力有残疾的人,这会成为障碍。在本文中,我们将研究一些将可访问性功能添加到简单 GUI 的方法,侧重于那些针对视力和运动有残疾人士的功能。
  
  “IBM Guidelines for Writing Accessible Applications Using 100% Pure Java”(请参阅参考资料)描述了可使残疾人士访问 Java 应用程序的应用程序设计和编码指南。在这些指南中,我们将侧重于下列内容:
  
  为所有操作提供等价的键盘操作
  在组件上设置助记符
  为常用功能使用加速键
  提供逻辑键盘跳格顺序
  提供逻辑组件布局(用于多媒体访问)
  标记组件
  命名逻辑组
  提供语义关系
  描述图标与图形
  请参阅参考资料以查看完整的指导原则文档。
  
  盲人用户界面
  盲人必须能够以不依靠于视觉反馈的方式访问应用程序的功能。针对盲人的最常用的辅助技术是“文本到语音”屏幕阅读器、可刷新的布莱叶盲文显示系统或相关的 I/O 设备。要使您的 Java 应用程序可访问,您需要以标准代码格式描述每个应用程序组件,这种格式可由辅助技术(AT)设备转换。例如,对于 GUI 组件(如按钮),您需要命名和描述其功能,然后将这些组件作为诸如“发送”、“进入”或“退出”之类的消息传递给用户。
  
  一些 GUI 应用程序组件传达信息时比其它组件需要考虑更多的东西。例如,盲人如何才能访问表中可视化格式的信息,或图标、树或者滚动列表呢?要使这类组件可访问,要求您提供大量的文本形式的描述性信息。尽管这个任务可能很乏味,但它是迈向创建支持可访问性应用程序必不可少的步骤。
  
  添加描述性信息
  使您的应用程序对视力受损者可访问的第一步,是提供对将要接收焦点的组件的描述。当用户或 AT 阅读器选择组件时(通常是通过键盘控制装置),则组件接收焦点。接收焦点的组件对应用程序功能(而非其设计或布局)是不可或缺的。因此,打个比方说,包含其它组件的 JPanel 本身不接收焦点,尽管其内部的个别组件可能将接收焦点。另一方面,假如面板对信息进行了分组,有时则需要使该分组可访问。类似地,通过使用 setLabelFor(Component) 方法可将标签与其它组件相关联。
  
  在 Swing 中,我们使用 javax.accessibility.Accessible 接口来提供关于应用程序组件的描述性信息。所有 Swing 组件都实现 Accessible 接口,该接口只有一个方法 javax.accessibility.AccessibleContext getAccessibleContext()。使用 getAccessibleContext() 方法,AT 阅读器可以访问所有它需要的信息来将组件的描述呈现给用户,并且与该组件交互和使用该组件。
  
  AccessibleContext() 定义了两个可用来提供可访问信息的方法:
  
  setAccessibleName(String name) 设置与给定 Accessible 对象相关联的 name。通常,只要组件接收到焦点,辅助阅读器就会提供这个名称。
  
  
  setAccessibleDescription(String description) 设置与给定 Accessible 对象相关联的 description。通常,当用户要求关于组件的更多具体信息时,辅助阅读器将提供这个描述。
  标准 Swing 组件通常都为 AccessibleName 和 AccessibleDescription 提供了缺省值。例如,JLabel 或 JTextField 文本将被用作其缺省的可访问名称。同样,任何组件的 ToolTip 将被用作其缺省的可访问描述。但是,我的经验表明,缺省值不能为给定组件提供最佳名称或描述,因此我建议您显式地设置您的组件值。
  
  要设置文本域值,您需要输入一些类似于清单 1 所示的代码:
  
  清单 1. 设置文本域值
  import javax.swing.*;
   :
  JTextField streetField = new JTextField("", 20);
  streetField.setName("streetField");
  streetField.getAccessibleContext().
    setAccessibleName("Street Entry Field");
  streetField.getAccessibleContext().
    setAccessibleDescription("Enter a street address");
  streetField.setToolTip("Street Address");
   :
  -- set any other desired characteristics --
  
  
  
  
  类似地,要设置按钮的值,您可以输入清单 2 中所示的代码:
  
  清单 2. 设置按钮的值
  import javax.swing.*;
   :
  JButton okButton = new JButton("OK");
  okButton.setName("okButton");
  okButton.getAccessibleContext().setAccessibleName("OK Button");
  okButton.getAccessibleContext().setAccessibleDescription(
    "Activate to commit changes and continue");
  okButton.setToolTip("Commit changes");
  okButton.setMnemonic((int)'O');
   :
  -- set any other desired characteristics --
  
  
  
  可访问键盘导航
  通常 Swing 答应用跳格(Tab)、反向跳格和箭头键进行键盘导航。遗憾的是,这个系统难以实现并且很费时,因为它要求用户导航所有中间组件才能到达它需要的那个组件。对于更有效的键盘导航,用户应该能够迅速地在重要组件之间切换,而无须考虑它们在 GUI 布局中的顺序。我们可以将助记符键盘设置用于 javax.swing.AbstractButton 和 javax.swing.JLabel 的子类以及应用程序菜单中的项。助记符通常称为加速键,因为它们根据 GUI 内容直接进行工作。
  
  在为您的界面建立了助记符系统之后,用户就可以通过使用 Alt 键和键盘上表示该组件的助记符键(Alt+键)导航到任何想用的组件上。但是这种设置有一个问题,就是它对于顶级组件(通常是 JFrame 或 JDialog)而言是全局的。这意味着基本上只有 26 个唯一值,却要分配给所有菜单和菜单项以及基本的 GUI 内容。在频繁使用的 GUI 上并非所有组件都可以链接到助记符键,因此您必须确定哪些组件对于用户是最重要的,然后相应的设置它们。我建议您为菜单项、重要的操作按钮(如 OK 或 Cancel)和 GUI 中每个逻辑组中的初始组件创建助记符链接,然后让用户跳格到其它每个组件上。
  
  设置跳格顺序和初始焦点
  对于大多数基于跳格的逻辑导航,我建议您将组件按您希望跳格选择的顺序添加到容器中。您可能希望以相同的方式组织嵌套的容器(即 JPanel)。尽管从上到下、从左向右(T2B、L2R)的顺序是标准的,但您可能希望建立不同的系统,如基于列排列的系统。您可以使用方法 JComponent.setNextFocusableComponent(Component c)(或 Java 1.4 中的类 java.awt.FocusTraversalPolicy)来强制规定定制的跳格顺序。AccessibilityDemo1 GUI 说明了一个跳格系统,该系统基于将组件以 T2B、L2R 顺序添加到容器中。
  
  在定义了跳格顺序之后,您需要确保每个初始组件都在选中其容器时接收到焦点。当容器接收到焦点时(请参阅参考资料以获取关于 FocusListener 的更多信息),它应该向期望的初始组件发出 java.awt.Component.requestFocus()(在 Java 1.4 中是 java.awt.Component.requestFocusInWindow())。
  
  另一种方法是在窗口激活时设置初始焦点。例如,下列代码将 WindowListener 添加到 JFrame,后者在窗口被激活时为 JTextField 请求焦点。
  
  清单 3. 在激活时设置初始焦点
  import java.awt.event.*;
  import javax.swing.*;
   :
  JFrame frame = new JFrame();
  JTextField field = new JTextField(); /// field to get initial focus
  boolean focusSet;
   :
  frame.addWindowListener(new WindowAdapter() {
   public void windowActivate() {
     if ( !focu
上一篇:使用档案文件提高 applet 的加载速度 人气:374
下一篇:SWT:AWT和SWING的强大竞争者 人气:507
浏览全部Java的内容 Dreamweaver插件下载 常用网页广告代码全集
  最新网站源码 最新软件下载
2008-10-10 企业网站智能管理系统(TZIMS) v6
2008-10-10 拓文asp.net网站内容管理系统 v6
2008-10-10 动网论坛PHP版 v2.0++ Build 081
2008-10-10 免费时代CMS v5.0
2008-10-10 wodig第四季中文DIGG社区 v4.1 b
2008-10-10 老Y文章管理系统 v2.2 bulid 081
2008-10-10 魔法盒动感相册 ASP+SQL版 v2.0
2008-10-10 Asoft签到管理系统 v3.0 Pack1
2008-10-10 哥特人音乐网潮流留言本 v1.1
2008-10-11 联系人分组工具 v1.1 中文破解版
2008-10-11 FaceMelter变脸 v2.0 汉化破解版
2008-10-11 PathTracker道路跟踪仪 v1.2 破解
2008-10-11 Rooms手机聊天室 v0.6.7 破解版
2008-10-11 RemoteDesktop远程桌面 v1.0 破解
2008-10-11 ProRemote远程调音台 v1.0.1 破解
2008-10-11 PicShare照片共享 v1.0.0 破解版
2008-10-11 Photogene照片编辑器 v1.5 汉化破
2008-10-11 WriteRoom共享文档 v1.0 破解版
  发表评论
姓 名: 验证码:
内 容:
站长工具:网站收录查询 | Google PR查询 | ALEXA排名查询 | CSS在线编辑器 | 广告代码 | js/vbs加密 | md5加密 | 进制转换 | UTF-8 转换工具 | Html转换js | Html转换asp | Html转换php | Html转换perl
实用工具:汉字翻译拼音 | 拼音字典 | 符号对照表 | 个税计算 | 实时汇率查询换算 | 经典小工具 | 汉字简繁转换 | 普通单位换算 | 公制单位换算 | 生辰老黄历 | 国内电话区号 | 国家代码与域名缩写 | 文字加密解密 | 健康查询 | 万年历 | 汉字横竖排版 | 手机号码查询 | 计算器 | ip搜索
业务联系 | 广告刊登 | 频道合作 | 投稿荐稿 | 联系方式 | 加入收藏 | RSS订阅
Copyright © 2000-2008 www.knowsky.com All rights reserved | 网络实名:动态网站制作指南 | 沪ICP备05001343号
ホームページ制作 不動産検索システム 求人情報
防水工事·改修工事 フットサル大会 探偵
SEO対策 中国語教室 ホームページ作成