在Swing中使用自定义字体以俄语显示文本

时间:2014-12-01 18:47:15

标签: java swing

我在Swing应用程序中使用自定义字体并加载它:

URL l = ClassLoader.class.getResource("/resource/template/CarroisGothic-Regular.ttf");
Font font = Font.createFont(Font.TRUETYPE_FONT, l.openStream());
font = font.deriveFont(Font.PLAIN, 13);
GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
ge.registerFont(font);

UIManager.put("ComboBox.font", font);

在区域设置/语言设置为英语的系统集上可以正常工作,但对于其他语言(例如俄语),它会显示乱码。

enter image description here

这就是我显示月份名称的方式:

String[] months = new DateFormatSymbols().getMonths();
for (int i = 0; i < months.length && i < 12; i++) {
     cmbMonth.addItem(months[i]);

     if(i == Calendar.getInstance().get(Calendar.MONTH) + 1) {
            cmbMonth.setSelectedIndex(i);
     }
}

1 个答案:

答案 0 :(得分:0)

标记中定义的字体名称将指向系统的字体缓存,而不是您的应用程序,这就是您的应用程序未显示所需字体的原因

你应该尝试在机器上本地安装字体并在你的应用程序中使用它。