Java JTree叶子中的UTF-8字符

Java JTree叶子中的UTF-8字符,java,swing,utf-8,jtree,Java,Swing,Utf 8,Jtree,我正在使用JTree在GUI上显示数据。有时,该数据是UTF-8格式的字符串。这些字符串可能包含外来字符或表情符号。我的问题是字符串显示错误 示例: import javax.swing.JFrame; 导入javax.swing.JScrollPane; 导入javax.swing.JTree; 导入javax.swing.tree.DefaultMutableTreeNode; 导入javax.swing.tree.TreeNode; 公开课演示{ 公共静态void main(字符串[]ar

我正在使用JTree在GUI上显示数据。有时,该数据是UTF-8格式的字符串。这些字符串可能包含外来字符或表情符号。我的问题是字符串显示错误

示例:

import javax.swing.JFrame;
导入javax.swing.JScrollPane;
导入javax.swing.JTree;
导入javax.swing.tree.DefaultMutableTreeNode;
导入javax.swing.tree.TreeNode;
公开课演示{
公共静态void main(字符串[]args){
DefaultMutableTreeNode根=新的DefaultMutableTreeNode(“根”);
DefaultMutableTreeNode叶=新的DefaultMutableTreeNode(“叶:
  • 当使用
    tree2.setFont(新字体(“DejaVu Sans”,0,16));
    时,代码工作正常。
    • 我正在Windows10x64上运行JDK1.8.066

import java.awt.*;
导入javax.swing.*;
导入javax.swing.tree.*;
公开课演示2{
公共JComponent makeUI(){

//String s=“据我所知,您需要一种能够显示这些字符的字体。与字符编码无关。我的GUI使用默认字体“Lucida Grande”对我来说,它应该支持这些字符。检查字体文件,看看它是否有这些字符,如果没有创建它们,或者找到包含它们的字体。还有,如果答案之一提供解决了您的问题;请将其标记为已接受的答案。是的,很抱歉我太笨了。我认为更改为显示表情的编辑器字体就足够了。事实并非如此:)。字体
font.canDisplay()
方法让我大开眼界。我将加入自己的字体,以获得一个独立于操作系统的解决方案。仍然有一种奇怪的行为,即“L”不仅被表情符号破坏。
tree1
修复了“L”对我来说,但不是表情符号。
tree2
提供了与默认字体相同的字体。因此我假设字体实际上是问题所在,而不是JTree不支持UTF-8。我使用的是OSX 10.11.1和JDK 1.8.051。感谢您的示例!