快速业务通道

在 Java 开发过程中支持双向字符集语言(BiDi) - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-17
如 ComboBox 的下拉箭头从左边移到右边,控件里面的文字的布局转换,文字的录入 等等。

AWT

AWT(Abstract Windowing Toolkit),中文译为抽象窗口工具包,是 Java 提供的用来 构建和设置 Java 图形用户界面的基本工具。这个工具包提供了一套与本地图形界面进行交 互的接口。AWT 中的图形函数与操作系统所提供的图形函数之间有着一一对应的关系。当我 们利用 AWT 来构件图形用户界面的时候,实际上是在利用操作系统所提供的图形库。对于 BiDi 来讲,AWT 组件里面的文字布局实际上依赖于底层操作系统。另外,AWT 组件对 BiDi 要求的控件布局也有诸多缺陷,因此 Java 软件开发人员如果要开发支持 BiDi 的应用程序 ,就不要采用 AWT。

在 Java 开发过程中支持双向字符集语言(BiDi)(2)

时间:2011-04-30 IBM 赵一三

Swing

Swing 是一个用于开发 Java 应用程序用户界面的开发工具包。它是 Sun 与 Netscape 合作建立的一个高级图形库。与 AWT 相比,Swing 具有更丰富而且更加方便的用户界面元素 集合,Swing 对于底层平台的依赖更少。因此,Swing 可以在不同平台上提供给用户统一的 视觉体验。

在 BiDi 支持方面,因为 Swing 组件是纯 Java 编写,所以 Swing 的 BiDi 支持可以完 全独立于底层的操作系统。

Java 最重要的 BiDi 相关类是 java.awt.ComponentOrientation,这个类提供了几个基 本方法和常量来设置 Java 应用程序的全局方向。

ComponentOrientation. getOrientation (Locale  locale) 返回指定 Locale 的全局方向

ComponentOrientation. isLeftToRight () 判断当前的应用程序是否是从左到右的方向

ComponentOrientation 还提供了常量 LEFT_TO_RIGHT,RIGHT_TO_LEFT 来指定全局方向 的取值。

另外一个 componentOrientation 类的使用密切相关的方法就是 Component. applyComponentOrientation (ComponentOrientation  o)

这个方法可以设置 java.awt.Component 对象以及所有它所包含的子对象的全局方向。

下面的示例代码演示了如何打开 Swing 对 BiDi 的基本支持,并根据系统的区域设置来 决定应用程序的全局方向。

public class BiDiApp extends JFrame {    ...    public static void main(String[] args) {      ...      new BiDiApp ();      ...    }    public BiDiApp () {      ...      super();      ...      applyComponentOrientation(ComponentOrientation        .getOrientation(Locale.getDefault()));      ...    }   }

通过方法 applyComponentOrientation,Swing 控件以及其包含的子控件的 BiDi 设置, 都可以根据计算机当前的区域设置来自动调整。如上一段代码所示,如果计算机当前的区域 是在英语区域,则应用程序启动以后,按照正常的英语应用程序显示和处理文字。如果计算 机当前的区域是在双向字符集区域,程序启动以后,程序的 UI 布局 、控件的文字方向,以 及录入光标的位置等等就会变成 BiDi 地区的使用方式。

图 1. 应用程序 BiDi 示例

注:显示非英文字符需要相应的文字资源以及相应的国际化支持,这些不在本文的介绍范 围之内,读者请参阅其它资料查看这方面的内容。

虽然通过上面的方法可以打开对 BiDi 的支持,但是 Swing 中的一些控件对 BiDi 的支 持是有缺陷的,这需要开发人员做一些额外的处理才能完整地支持 BiDi。下面笔者将一一介 绍这些有 BiDi 支持缺陷的 Swing 控件以及其对应的解决办法。

在 Java 开发过程中支持双向字符集语言(BiDi)(3)

时间:2011-04-30 IBM 赵一三

JFrame

在应用了 applyComponentOrientation 以后,JFrame 控件的标题栏如图 1 所示,是没 有翻转成

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号