带有verdana字体的按钮中的Java汉字

带有verdana字体的按钮中的Java汉字,java,swing,unicode,fonts,Java,Swing,Unicode,Fonts,我需要在我的应用程序中显示中文字符。 我使用Verdana字体。 标签(JLabel)使用字体正确显示这些字符,但文本按钮(JButton)显示的是正方形而不是字符 有什么想法吗?试试这个: jLabel.setFont(new java.awt.Font("MS Song", 0, 12)); 可能需要输入unicode格式的汉字,如本例所示: JLabel chineseJLabel = new JLabel("\u6B22\u8FCE\u4F7F\u7528" + "\u0020\u00

我需要在我的应用程序中显示中文字符。 我使用Verdana字体。 标签(
JLabel
)使用字体正确显示这些字符,但文本按钮(
JButton
)显示的是正方形而不是字符

有什么想法吗?

试试这个:

jLabel.setFont(new java.awt.Font("MS Song", 0, 12));

可能需要输入unicode格式的汉字,如本例所示:

JLabel chineseJLabel = new JLabel("\u6B22\u8FCE\u4F7F\u7528" + "\u0020\u0020Unicode\u0021");
chineseJLabel.setToolTipText("This is Traditional Chinese");

从……获得。然后可以使用将字符串转换为unicode。

Verdana不支持CJK。系统从另一种字体中选取字形–不管您使用的控件是什么,这种机制都应该起作用。Verdana TTF字体不支持汉字!我怀疑OP错误地认为他在标签上看到的字体是Verdana字体。我不这么认为。他看到的字体很可能是默认的Java逻辑字体,对话框字体。我相信他没有用Verdana字体正确设置标签的
setFont()
。为了证实我的怀疑,请键入
System.out.println(label.getFont())这真的很奇怪,因为Verdana不支持。我做了一个单元测试,证实了我的怀疑,Verdana为CJK Unicode序列生产矩形框…你能提供吗?为什么它与标签完美配合?我使用相同的字符串。如果它们的标签有效,这不太可能是编码问题。。。对于使用外语的开发人员来说,字符集通常很少是一个问题,因为他们不可能意外地假定所有ASCII。如果他们的标签工作正常,这不太可能是一个编码问题。。。对于使用外语的开发人员来说,字符集通常很少是一个问题,因为他们不会意外地假定所有ASCII。实际上,正方形确实是一个字体问题,将其更改为MS Song有很大的成功机会。有太多的事情可能会影响结果,无法解释为什么JButton不起作用,而JLabel起作用。例如,使用JButton的不同标志调用winapi。或者按钮使用粗体字体。Windows版本,Uniscribe版本。可能字体不太一样(会出错)。但是正方形(通常)意味着糟糕的字体。明确选择中文字体可以消除错误的编码怀疑。所以这个答案是解决问题的好办法。非常有用!下面是更多支持字体的列表