【发布时间】:2011-02-25 09:39:43
【问题描述】:
当我开始使用 JDK6 进行编程时,我对 文本组件 没有任何问题,无论是在 AWT 还是在 Swing 中。
但是对于 AWT 组件的标签或标题,我确实有问题。我无法在 AWT 组件上显示波斯语字符(在 Swing 中我将它们输入到源代码中)。
这是我的示例代码:
import javax.swing.*;
import java.awt.*;
import java.io.*;
import java.util.Properties;
public class EmptyFarsiCharsOnAWT extends JFrame{
public EmptyFarsiCharsOnAWT() {
super("مثال");
setDefaultCloseOperation(3);
setVisible(rootPaneCheckingEnabled);
}
public static void main(String[] args) throws AWTException, IOException {
JFrame jFrame = new EmptyFarsiCharsOnAWT();
MenuItem show ;
// approach 1 = HardCoding :
/*
show = new MenuItem("\u0646\u0645\u0627\u06cc\u0634");
*
*/
// approach 2 = using simple utf-8 saved text file :
/*
BufferedReader in = new BufferedReader(new FileReader("farsiLabels.txt"));
String showLabel = in.readLine();
in.close();
show = new MenuItem(showLabel);
*
*/
// approach 3 = using properties file :
FileReader in = new FileReader("farsiLabels.properties");
Properties farsiLabels = new Properties();
farsiLabels.load(in);
show = new MenuItem(farsiLabels.getProperty("tray.show"));
PopupMenu popUp = new PopupMenu();
popUp.add(show);
// creating Tray object
Image iconIamge = Toolkit.getDefaultToolkit().getImage("greenIcon.png");
TrayIcon trayIcon = new TrayIcon(iconIamge, null, popUp);
SystemTray tray = SystemTray.getSystemTray();
tray.add(trayIcon);
jFrame.setIconImage(iconIamge);
}
}
这三种方法在使用 IDE 运行时都有效,但是当我制作包含此类的 JAR 时(通过 NetBeans > 项目 > 清理和构建),我看不到预期的字符(它显示空/空白方块)!
注意:
看来我不能附加任何东西,所以文本文件的内容是这样的:نمایش 和属性文件的内容:
#Sun May 02 09:45:10 IRDT 2010
tray.show=نمایش
我想我必须让你知道,我不久前在 SDN 和“Java Ranch”论坛和其他本地论坛上发布了这个问题,我还在等待......
顺便说一句,我使用的是最新版本的 Netbeans IDE...
如果有人能解决这些该死的 AWT 组件永远不会为我呈现任何波斯语字符的解决方案,我将不胜感激......
【问题讨论】:
-
亲爱的垃圾神,我绝对喜欢触发那面旗帜,但似乎因为我是这里的 tyro,我不能,但保证只要我有足够的声望就这样做(我对这个网站不太熟悉...) 谢谢
-
有趣。我不能投票给你的答案;不知何故,系统认为它是我的,可能是由于称呼。
-
是的,就是这样。我对你的问题和答案投了赞成票。
标签: java fonts internationalization awt character