0
假设我们希望有一个非ASCII字符,例如U + 2082(下标2)。非ASCII字符在JFrame或任何Swing组件中不能正确显示
通常,我们可以在一个摆动组件(如JFrame)中将其显示为Character.toString('\u2082')
。
现在,我的问题是我无法确定确切的Unicode代码,因为确切的代码是由参数中提供的字符串确定的。该参数总是一个多原子离子 - 例如PO3。我的目标是找到“3”,将其转化为下标3(U + 2083),但也有足够的抽象算法/方法,以适用于任何多原子离子(不仅PO3,而且PO4也是),并让它在JFrame上正确显示。我在下面提供我的方法。
private static String processName(String original)
{
char[] or = original.toCharArray();
int returned = -1;
for(int i = 0; i < or.length; i++)
{
if(Character.isDigit(or[i]))
{
returned = Integer.parseInt(Character.toString(or[i]));
or[i] = (char) (returned + 2080);
returned = -1;
}
}
return new String(or);
}
您可能在想,代码看起来很干净,应该显示正确。但是,部分(char) (returned+2080)
不显示符号 - 它显示一个空白框。我试图通过设置兼容字体(GNU Unifont)来修复它,但那并没有做任何事情。有任何想法吗?
击中它的头!谢谢! – collielimabean 2013-05-09 03:24:20