在Java中呈现一个字符串,使用不同的语言英语,中文和印度语

时间:2017-03-14 11:53:54

标签: java swing

我需要在String单元格上呈现以下JTable。我们怎么做?

  

种皮汉字1ગુજરાતી2

更新:

看起来我的问题不明确。上面的字符串是文件名。需要在JTable中显示此文件名和许多其他文件名。数据是动态的。我可能需要一个自定义渲染器来显示完全相同的字符串。目前,这显示垃圾字符。只需将表格从Calibri更改为MS Gothic,我就可以看到中文字符,但不能显示字母。但是,随着数据的动态变化,我们将不知道使用什么字体。

所以,想知道是否有办法,以便我可以编程方式检查字符串,并根据需要使用不同的字体呈现字符串。

1 个答案:

答案 0 :(得分:0)

最简单的解决方案是使用更完整的字体。我相信DejaVu家族是体面的,其他人可能会提出更好的建议。 Oracle manual表明逻辑字体DialogDialogInputMonospacedSerifSansSerif也可能更完整。他们可能会根据需要渲染的特定字符映射到多个底层字体。 Oracle还提到了与Oracle的JRE一起发布的Lucidia系列作为另一种相当完整的可能性,尽管它没有中文,韩文或日文字符。

更复杂的解决方案是对每个字符串中的字符运行Character.UnicodeBlock.of(c),汇总Set<Character.UnicodeBlock>并根据字符串中的块来猜测哪种字体最合适,甚至写一个自定义渲染器使用适合其所属Unicode块的字体呈现每个字符(或字符序列)。 Unicode块往往根据它们包含的脚本进行分类。