我需要在String
单元格上呈现以下JTable
。我们怎么做?
种皮汉字1ગુજરાતી2
更新:
看起来我的问题不明确。上面的字符串是文件名。需要在JTable中显示此文件名和许多其他文件名。数据是动态的。我可能需要一个自定义渲染器来显示完全相同的字符串。目前,这显示垃圾字符。只需将表格从Calibri更改为MS Gothic,我就可以看到中文字符,但不能显示字母。但是,随着数据的动态变化,我们将不知道使用什么字体。
所以,想知道是否有办法,以便我可以编程方式检查字符串,并根据需要使用不同的字体呈现字符串。
答案 0 :(得分:0)
最简单的解决方案是使用更完整的字体。我相信DejaVu家族是体面的,其他人可能会提出更好的建议。 Oracle manual表明逻辑字体Dialog
,DialogInput
,Monospaced
,Serif
和SansSerif
也可能更完整。他们可能会根据需要渲染的特定字符映射到多个底层字体。 Oracle还提到了与Oracle的JRE一起发布的Lucidia系列作为另一种相当完整的可能性,尽管它没有中文,韩文或日文字符。
更复杂的解决方案是对每个字符串中的字符运行Character.UnicodeBlock.of(c)
,汇总Set<Character.UnicodeBlock>
并根据字符串中的块来猜测哪种字体最合适,甚至写一个自定义渲染器使用适合其所属Unicode块的字体呈现每个字符(或字符序列)。 Unicode块往往根据它们包含的脚本进行分类。