快速业务通道

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

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-17
为从右到左 RTL 方向的。开发人员可以采用下面这段示例程序来使 JFrame 的标题 栏变为从右到左 RTL 方向。

if (!ComponentOrientation.getOrientation(Locale.getDefault ()).isLeftToRight()) {    JFrame.setDefaultLookAndFeelDecorated(true); }

应用这段代码以后,图 1 的应用程序标题栏将会变成如图 2 所示:

图 2. JFrame 标题栏从右到左显示

需要指出的是,应用这段代码以后,JFrame 的外观将不再遵循操作系统界面风格。用户 需要自己决定是否采用这段代码来实现 JFrame 标题栏的 RTL,还是保持界面整体的风格不 变。

javax.swing.Box

javax.swing.Box 是一个轻量级的,可以放置各种简单控件(例如 JButton)的容器。使 用 Box 可以比较方便地控制其中控件的布局。然而,使用 Box 也带来了 BiDi 上面的一个 缺憾,applyComponentOrientation 设置的全局方向不能应用到 Box 里面包含的各个控件上 。

图 3. Box BiDi 从左到右显示

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

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

为了使 Box 里面的控件布局符合 ComponentOrientation 的取值,开发人员必须通过如 下示例代码来生成 Box 的实例对象。

Box box = new Box(BoxLayout.LINE_AXIS); //将控件加入到 box 对象中 box.add(Btn1); //Btn1,instance of JButton box.add(Btn2); //Btn2,instance of JButton

这样 Box 里面包含的控件将遵循这个应用程序的全局方向,如下图所示:

图 4. Box BiDi 从右到左显示

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

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

javax.swing.JComboBox

即便 ComponentOrientation 应用了从右到左 RTL 的全局方向,javax.swing.JComboBox 控件里面的文字缺省还是按照左对齐的方式显示。如下图所示:

图 5. JComboBox 内的文字左对齐

开发人员可以调用如下代码生成 JComboBox 的实例对象,强制 JComboBox 对象的文字遵 循右对齐的方向。如图 6 所示:

JComboBox box = new JComboBox(); //align all the comboBox items to RTL in case Arabic/Hebrew  locale if (!ComponentOrientation.getOrientation(Locale.getDefault ()).isLeftToRight()) {    ((JLabel)box.getRenderer()).setHorizontalAlignment (SwingConstants.RIGHT); }

图 6. JComboBox 内的文字右对齐

javax.swing.JTable

javax.swing.JTable 的表格里面的内容在缺省情况下也不会按照 ComponentOrientation 取值进行显示。即便 ComponentOrientation 是从右到左 RTL,JTable 还是会如下图所示显 示内容:

图 7. JTable 内的文字左对齐

开发人员可以调用如下代码生成 JTable 的实例对象,强制 JTable 对象里面的文字遵循 右对齐的方向。如图 8 所示

JTable table= new JTable(...); //align all the table column data to RTL in case Arabic/Hebrew  locale if (!ComponentOrientation.getOrientation(Locale.getDefault()).isLeftToRight ()){    ((JLabel)table.getDefaultRenderer(String.class)).setHorizontalAlignment (JLabel.RIGHT); }

图 8. JTable 内的文字右对齐

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

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

对齐方式

javax.swing.JLabel 是一个 GUI 开发中非常常用的控件,可以用来展示界面上的文字内 容。通常来讲,使用 JLabel 控件是遵循 ComponentOrientation 指定的全局方向的。但是 如果用户强制使用代码指定了控件的显示方向,新的设置将覆盖 ComponentOrientation 的 全局方向。

JLabel label = new JLabel(text, icon, SwingConstants

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站: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号