如何在 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 ]
我想处理 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 ]