JavaFX:如何显示表情符号?

Kam*_*xom 6 java eclipse javafx emoji javafx-8

我一直在努力解决这个问题,但似乎无法解决。我需要某种方式在JavaFX应用程序中显示表情符号(如WhatsApp)。

我用awt和Swing进行了尝试,但现在没有任何成功(编辑:swt可以工作,但可能仅适用于Mac),但我使用扩展的Unicode和Codepoints进行了尝试,但这没有帮助。我希望它甚至有可能,因为Windows通常不允许您显示Emoji(我自己使用Mac)。

今天,我偶然发现了有关JavaFX 8中Emoji的文章。有人说他通过扩展javafx.scene.text.TextFlow类实现了一种用JavaFX显示Emoji表情的方法。还有一个指向简短演示的链接,从第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);
    }
}
Run Code Online (Sandbox Code Playgroud)

Mar*_*cel -2

有两种方法可以做到这一点:

  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 添加到文本流,如果没有,则将 TextNode 添加到 TextFlow

-->

“此文本已传递 :P 到解析器”

  • 这 -> 文本节点
  • 文本 -> 文本节点
  • ...
  • :P -> ImageView,其中包含 :P 图像
  • 到 -> 文本节点