В Java, как определить, может ли изображение Юникода отображаться в JButton? - PullRequest
1 голос
/ 03 июля 2019

Я нашел это Q & A: Обнаружение, когда символ Юникода не может отображаться правильно

Но это не на Java.

У меня есть следующий код:

int codePoint=Integer.parseInt(unicodeText,16);
byte eBytes[]=new String(Character.toChars(codePoint)).getBytes(StandardCharsets.UTF_8);
String str=new String(eBytes,Charset.forName("UTF-8"));

JButton button=new JButton(str);

Он может отображать Unicode-изображение на JButton следующим образом:

enter image description here

Так что если вы установите unicodeText что-то вроде «1F602»,он может отображать изображение на кнопке.

Мои вопросы:

<1> Я пробовал и Java 8, и Java 12, результат один и тот же, они пропускают одни и те же изображения из определенныхUnicodes, почему?Что можно сделать, чтобы отобразились отсутствующие изображения, кажется, что обновление Java не сделало этого.

<2> Как я могу определить из своего приложения Java, какие unicodes не могут быть отображены?

1 Ответ

1 голос
/ 03 июля 2019

Это зависит от шрифта, поэтому используйте Font::canDisplayUpTo

Итак, на самом деле, возьмите Font и попробуйте следующее:

JButton button = new JButton(str);
Font font = button.getFont();
int failingIndex = font.canDisplayUpTo(str);
if (failingIndex >= 0) {
  // failingIndex points to the first codepoint in your string that cannot be represented with the font.
} else {
  // This string can be displayed with the given font.
}

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...