如何在JLabel中使用颜色获取表情符号

时间:2017-11-28 11:16:47

标签: java swing encoding jlabel emoji

我想在Java中处理包含表情符号的字符串,如下所示:

enter image description here

当我将此字符串放入JLabel时,图形结果为

enter image description here

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

2 个答案:

答案 0 :(得分:5)

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

因此,您需要做的就是将JLabel的字体设置为具有漂亮的表情符号字形的字体,例如来自Google的Noto Color Emoji

答案 1 :(得分:1)

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代码点&amp;字符串
  • HTML&amp;嵌入式图像
  • 的Base64