如何在 JLabel 中获取带有颜色的表情符号

How to get emoji with colors in JLabel

我想处理 Java 中包含表情符号的字符串,例如:

当我将这个字符串放入JLabel中时,图形结果是这样的

如何让它看起来像 JLabel 中的第一个? 谢谢。

emoji unicode symbols,简单的说汉字就是一种字体。那些就像所有字符单色,黑色。但是您可以用嵌入的图像替换它们,如果您使文本使用 StyledDocument,HTML。拥有自己的一套表情图标。

int[] emojis = { 0x1F600 };
String someText = new String(emojis, 0, emojis.length);

for (int emoji : emojis) {
    String emojiString = new String(new int[] { emoji }, 0, 1);
    if (!someText.contains(emojiString)) {
        continue;
    }
    String imgPath = String.format("/images/emoji%50x.png";
    byte[] imgContent = Files.readAllBytes(Paths.get(imgPath));
    String img = "<img src='data:image/png;base64,"
            + Base64.getEncoder().encode(imgContent)
            + "' width='16' height='16' alt='happy'>"; 
    someText = someText.replace(emojiString, img);
}

label.setText("<html>" + someText);

未测试。

  • Unicode 代码点和字符串
  • HTML & 嵌入图片
  • Base64

表情符号只是 unicode 字符,由字体指定一个字形来表示该字符。

因此,您需要做的就是将 JLabel 的字体设置为带有漂亮表情符号字形的字体,例如 Google.[=12= 中的 Noto Color Emoji ]