0
我已经制作了这个简单的程序,我希望在JTextArea中显示unicode符文字符\ u16e6。此符号显示在JFrame的顶部,但不显示在JTextArea中。我已经将JTextArea的字体设置为与JFrame相同,但它仍然只会显示为空白框。我怎样才能在JTextArea中显示这个或任何任意的Unicode字符?JTextArea组件中的Unicode支持
import java.awt.*;
import javax.swing.*;
public class WTextArea{
public static void main(String[] args){
JFrame frame = new JFrame("\u16e6");
frame.setSize(1000,1000);
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
System.out.println(frame.getFont().toString());
Container content = frame.getContentPane();
JTextArea jta = new JTextArea();
jta.setFont(frame.getFont());
content.add(jta);
jta.setText("\u16e6");
}
}
什么环境,你在运行(的Windows?),什么是JVM的字符编码?尝试[将'-Dfile.encoding = UTF-8'](http://stackoverflow.com/q/361975/113632)添加到'java'命令中,看看是否有帮助。 – dimo414
'我已经将JTextArea的字体设置为与JFrame相同,' - JFrame的标题栏不是Swing组件,它是一个操作系统小部件。因此,操作系统使用的字体与框架的getFont()方法中返回的字体不同。我知道这并不能解决问题,只是说明字体不同,这就是文字区域无法渲染字符的原因。所以你需要找到一个呈现“\ u16e6”字符的字体。我不知道该怎么做。 – camickr
@AndrewThompson为什么这是一个封闭问题的重复?这似乎是一个完全合理的问题。 – dimo414