Java中的Unicode符号(箭头)

时间:2010-02-02 09:52:17

标签: java unicode special-characters

我想在我的应用中使用以下符号:

arrows http://img402.imageshack.us/img402/3176/arrowso.jpg

这里是我的代码:

Button goToFirstButton = new Button("\uE318");
Button prevPageButton = new Button("\uE312");
Button nextPageButton = new Button("\uE313");
Button goToLastButton = new Button("\uE319");

,结果是

result http://img693.imageshack.us/img693/9063/resultbu.jpg

似乎\ uE318和\ uE313错了。我应该用什么呢?对于goToLastButton和goToFirstButton,我更喜欢使用此图像

alt text http://img3.imageshack.us/img3/5724/singlearrow.jpg

但是我找不到,我应该使用哪个代码。

8 个答案:

答案 0 :(得分:8)

我建议使用按钮上的图标而不是特殊字符,因为能力 显示可能会受到客户端工作站上字体可用性的强烈影响。

答案 1 :(得分:6)

您要使用的unicode代码点是private use area的一部分,即每个字体制造商都可以随意在任何位置放置他们喜欢的任何字符。用于查找箭头字符的字体只是与用于显示按钮文本的字体不同的字体。如果按钮文本将\ uE318和\ uE313映射到某些中文(?)graphem,那么那不是错误,只是不同。

答案 2 :(得分:3)

虽然有多个人提出了这个问题,但是你应该避免使用这些代码点,因为你不能依赖用户系统显示这些字符的字体,你在例子中得到错误字符的原因是完全错过了。您尝试绘制的所有符号都在“私人使用区域”中,这意味着所涉及的符号在每种字体中可能会有所不同。

The Unicode standard states:

私人使用区(E000-F8FF)     *私人使用区域不包含任何字符分配,因此不为该区域提供字符代码图表或名单。

如果您嵌入了您想要使用的特定字体以确保您可以使用这些代码点,那很好。但这确实意味着您应该在代码中使用\ u ####表示法,因为将字符直接嵌入Unicode意味着除非有人以正确的字体查看它,否则将无法理解。

总而言之,使用图标可能会更好,除非你已经有一个符号字体,你认为它远远优于你可能做过的任何图形工作。

答案 3 :(得分:3)

◀▶

Geometric Shapes chart中有几个符号与您想要的符号相近。但是,正如其他人所说,使用图标并远离私人使用区域。

答案 4 :(得分:1)

我还建议使用图标。并非所有字体都包含所有unicode字符点的符号。

您可以通过指定特定字体来使其正常工作。但是,如果在Windows 7计算机上找到该字体,但在Mac OS X或Linux或Windows XP上找不到该怎么办?然后系统将根据浏览器默认值选择另一种字体,默认情况下可能没有您想要的符号。

答案 5 :(得分:1)

我建议如果您担心客户端字体显示特定字符​​的能力,请使用以下内容:

private static final HashMap<Character, Font> fontCache = new HashMap<Character, Font>();
public static Font getFontThatCanDisplay(char c, int style, float size) {
    Font f = fontCache.get(c);
    if (f == null) {
        f = UIManager.getFont("Label.font");
        for (Font font: GraphicsEnvironment.getLocalGraphicsEnvironment().getAllFonts()) {
                if (font.canDisplay(c)) {
                    f = font;
                    break;
                }
            }
            fontCache.put(c, f);
        }
        return f.deriveFont(style, size);
    }

答案 6 :(得分:0)

Java源文件是UTF-8编码的,因此您可以将所需的符号直接放在源代码中(只需从字体查看器或Web中复制'粘贴',只要您使用体面的编辑器即可。无需使用这种令人困惑的“\ uXXXX”表示法。例如,我发现这对科学记法中常用的希腊字母很有用(δ,ρ,ψ......) - 你甚至可以将它们用作变量名。

当然,您选择的字体必须包含您想要的符号,否则它将无效。

答案 7 :(得分:0)

我将在buttons上使用Unicode字形进行辩护,但实现Icon界面并使用paintIcon()绘制您想要的任何内容非常容易。教程"Creating a Custom Icon Implementation"就是一个很好的例子;此代码显示了一个更复杂的动画histogram