代码之家  ›  专栏  ›  技术社区  ›  sirdan

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

  •  4
  • sirdan  · 技术社区  · 7 年前

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

    enter image description here

    enter image description here

    如何使其看起来像JLabel中的第一个? 非常感谢。

    2 回复  |  直到 7 年前
        1
  •  5
  •   MarioDS    7 年前

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

    所以,你需要做的就是设置你的 JLabel 例如,使用漂亮的表情符号 Noto Color Emoji 来自谷歌。

        2
  •  0
  •   Joop Eggen    7 年前

    emoji unicode symbols ,简单来说,字符是一种字体。这些角色都是黑白的。然而,如果你让文本使用样式文档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&嵌入式图像
    • 基准64