簡體   English   中英

JavaFX:如何顯示表情符號?

[英]JavaFX: How can I display Emoji?

我現在一直在為這個問題苦苦掙扎,但我似乎無法弄清楚。 我需要某種方式在 JavaFX 應用程序中顯示表情符號(如在 WhatsApp 中)。

我用 awt 和 Swing 嘗試過,但現在沒有任何成功(編輯:swt 可以工作,但可能只適用於 Mac)我用擴展的 Unicode 和代碼點嘗試過,但這沒有幫助。 我希望它甚至是可能的,因為 Windows 通常不允許您顯示表情符號(我自己使用的是 Mac)。

今天我偶然發現了這篇關於 JavaFX 8 中表情符號的帖子 有人說他通過擴展javafx.scene.text.TextFlow類實現了一種在 JavaFX 中顯示表情符號的方法。 還有一個小演示的鏈接,從第 57 張幻燈片開始,它對這些所謂的EmojiFlow對象進行了一些解釋。 但是我好像找不到下載!

感謝大家的回答,我已經在這個問題上掙扎了這么久,甚至可能是不可能的

這是一個有點不工作的例子

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.layout.VBox;
import javafx.scene.text.Text;
import javafx.scene.text.TextFlow;
import javafx.stage.Stage;

public class Main extends Application {
    @Override
    public void start(Stage stage) {
        VBox root = new VBox();

            // I used TextFlow here because the article suggested
            // extending this class, but I know it's not working
            // just like this
        TextFlow textFlow = new TextFlow(new Text("Should be alien smiley: "
                + (char) 0xF47D));

            // casting a hex number to a char is equal to using "\uF47D"
        root.getChildren().add(textFlow);
        Scene scene = new Scene(root);
        stage.setScene(scene);
        stage.show();
    }

    public static void main(String[] args) {
        launch(args);
    }
}

github pavlobu/emoji-text-flow-javafx上有一個項目,它是 JavaFX 的一個庫,其主要目的是允許用戶使用擴展的 TextFlow 來顯示表情符號。 它有助於在 JavaFX 應用程序運行的不同平台上顯示一致的表情符號圖像。

我開發它是為了解決在基於 JavaFX 的 UI 應用程序中一致的跨平台表情符號顯示的問題。 它還可以幫助您使用不同的表情符號圖像包,您只需要下載帶有您要使用的表情符號包的 .jar。 這是一個鏈接

目前,它包含以下表情符號樣式包之一:

  1. 打開表情
  2. 表情符號
  3. 表情符號二

你甚至可以用你自己的表情包編譯這個庫。 操作說明在README.md 中

按照以下步驟將表情符號添加為文本:

  1. 前往https://apps.timwhitlock.info/emoji/tables/unicode搜索您想要的任何表情符號並檢查其字節碼(例如 \\xF0\\x9F\\x98\\x81)

  2. 創建一個字節數組並向其添加字節代碼,例如。 我正在使用這個表情符號:😁,它的字節碼是 \\xF0\\x9F\\x98\\x81 所以,


byte[] emojiByteCode = new byte[]{(byte)0xF0, (byte)0x9F, (byte)0x98, (byte)0x81};

  1. 創建一個新字符串,

String emoji = new String(emojiByteCode, Charset.forName("UTF-8"));

  1. 您可以將此字符串用作標簽、按鈕等來顯示表情符號。

有兩種方法可以做到這一點:

  1. 采用顯示發射圖標的字體(較少推薦)
  2. 使用 Textflow 並解析文本,如下例所示:

(到目前為止,我只為超鏈接做過)

https://bitbucket.org/kogs/javafx-xmpp-client/src/660b12b5c514034ce78e1f653ea265cd74a645c6/src/main/java/de/kogs/xmpp/client/controller/MessageParser.java?at=master

https://bitbucket.org/kogs/javafx-xmpp-client/src/660b12b5c514034ce78e1f653ea265cd74a645c6/src/main/java/de/kogs/xmpp/client/TextParsing/?at=master

更簡單的說:

查找表情符號 (":)"、":P"...) 的文本,如果您找到一個,則將 Imageview 添加到 textflow,如果沒有,則將 TextNode 添加到 TextFlow

-->

“此文本通過 :P 到解析器”

  • 這 -> 文本節點
  • 文本 -> 文本節點
  • ...
  • :P -> 帶有 :P Image 的 ImageView
  • 到 -> 文本節點

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM