Юникод символы (стрелки) в Java - PullRequest
5 голосов
/ 02 февраля 2010

я хочу использовать следующие символы для кнопок в моем приложении:

стрелки 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");

и результат равен

результат http://img693.imageshack.us/img693/9063/resultbu.jpg

Кажется, что \ uE318 и \ uE313 ошибочны.Что я должен использовать вместо этого?Для goToLastButton и goToFirstButton я предпочитаю использовать эти изображения

альтернативный текст http://img3.imageshack.us/img3/5724/singlearrow.jpg

, но я не могу найти, какой код использовать.

Ответы [ 8 ]

8 голосов
/ 02 февраля 2010

Я бы предложил использовать значки на кнопках вместо специальных символов, поскольку возможность отображения может сильно зависеть от наличия шрифтов на клиентской рабочей станции.

6 голосов
/ 02 февраля 2010

Кодовые точки Unicode, которые вы хотите использовать, являются частью области личного использования , то есть каждый производитель шрифта может свободно размещать любой символ в любой позиции. Шрифт, который вы использовали для поиска символов со стрелками, просто отличается от шрифта, используемого для отображения текста кнопки. Если текст кнопки отображает \ uE318 и \ uE313 на некоторый китайский (?) Графем, то это не неправильно , просто другое.

3 голосов
/ 02 февраля 2010

& # x25C0; & # X25B6;

На графике Geometric Shapes есть пара символов, близких к тому, что вы хотите. Однако, как уже говорили другие, используйте значки и не входите в частную область использования.

3 голосов
/ 02 февраля 2010

Несмотря на то, что несколько человек выдвинули аргумент, вам следует избегать использования этих кодовых точек, поскольку вы не можете полагаться на то, что пользовательские системы имеют шрифт, отображающий эти символы, причина, по которой вы получаете неправильные символы в вашем примере совсем пропустил. Все символы, которые вы пытаетесь нарисовать, находятся в «частной области использования», что означает, что используемые символы могут быть разными для каждого отдельного шрифта.

Стандарт Unicode гласит:

Зона личного пользования (E000-F8FF) * Область личного пользования не содержит каких-либо назначений символов, следовательно, для этой области не предоставляются таблицы кодов символов или списки имен.

Если вы встраиваете определенный шрифт, который хотите использовать, чтобы убедиться, что вы можете использовать эти кодовые точки, это нормально. Но это означает, что вы действительно должны использовать нотацию \ u #### в своем коде, потому что встраивание символов в Unicode напрямую означает, что источник не будет иметь смысла, если кто-то не увидит его правильным шрифтом.

В общем, вероятно, лучше использовать значки, если у вас уже нет символьного шрифта, который, по вашему мнению, намного превосходит любую графическую работу, которую вы в противном случае делали бы.

1 голос
/ 17 июня 2011

Я хотел бы предложить, чтобы, если вы беспокоитесь о возможности шрифта клиента отображать определенный символ, используйте следующее:

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);
    }
1 голос
/ 02 февраля 2010

Я также предлагаю использовать иконки. Не все шрифты имеют символы для всех точек символов Unicode.

Вы можете заставить его работать, указав определенный шрифт. Но что, если этот шрифт найден на компьютерах с Windows 7, но не на Mac OS X или Linux или Windows XP? Затем система выберет другой шрифт, основываясь на настройках браузера по умолчанию, и в этом значении по умолчанию могут отсутствовать нужные символы.

0 голосов
/ 02 февраля 2010

Я буду защищать, используя символы Unicode на кнопках , но очень просто реализовать интерфейс Icon и использовать paintIcon() для рисования чего угодно. Учебное пособие «Создание пользовательской реализации значков» является хорошим примером; этот код показывает более сложную анимированную гистограмму .

0 голосов
/ 02 февраля 2010

Исходные файлы Java имеют кодировку UTF-8, поэтому вы можете помещать нужные символы непосредственно в исходный код (просто копировать и вставлять из средства просмотра шрифтов или из Интернета), если вы используете достойный редактор.Не нужно использовать эту запутанную нотацию \ uXXXX.Например, я нашел это полезным для греческих букв, обычно используемых в научной нотации (δ, ρ, ψ ...) - вы даже можете использовать их в качестве имен переменных.

Конечно, ваш шрифт по выборудолжен иметь нужные символы, иначе он не будет работать.

...