如何使用插入图像制作文本编辑器?

时间:2016-09-15 13:07:28

标签: text javafx-8 text-editor

我需要实现一个文本编辑器JavaFX,但是我在创建在文本编辑区域中添加图像的功能时遇到了问题。

正是当您单击按钮时,可以添加图像作为屏幕截图:

现在,我尝试使用WebView,我将TextArea代码放在下面:

    private WebView view;
private WebEngine engine;

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

@Override
public void start(Stage stage) {
    view = new WebView();
    engine = view.getEngine();
    engine.loadContent("<body><textarea id='content'></textarea><p id='ding' style='display:none;'></p></body>");
    view.setPrefHeight(240);

    Button btn = new Button("Click Me!");
    btn.setOnAction(new EventHandler<ActionEvent>() {
        @Override
        public void handle(ActionEvent event) {
            append();
            engine.executeScript(
                    "document.getElementById('ding').innerHTML=document.getElementById('content').value;"
            );
        }
    });

    Button btn2 = new Button("Click Me 2!");
    btn2.setOnAction(new EventHandler<ActionEvent>() {
        @Override
        public void handle(ActionEvent event) {
            append();
            engine.executeScript(
                    "document.getElementById('ding').innerHTML=document.getElementById('content').value;"
            );
        }
    });

    StackPane root = new StackPane();
    root.getChildren().addAll(view, btn, btn2);
    Scene scene = new Scene(root, 300, 250);

    stage.setScene(scene);
    stage.show();
}

private void append() {
    Document doc = engine.getDocument();
    Element el = doc.getElementById("ding");
    String s = el.getTextContent();

    s += "<img src='http://bluebuddies.com/gallery/Historical_Smurfs/jpg/Smurfs_Historical_Figure_20506_Abraham_Lincoln.jpg'/>";
    el.setTextContent(s);
    System.out.println(s);
}

单击按钮后添加到文本区域中的文本链接到照片但遗憾的是TextArea这不受支持,当我想使用一些html编辑器问题时,我将无法正确提取所有文本格式化。

我尝试过像RichTextFX这样的解决方案,但不幸的是他没有能力添加图像。 HTML编辑器也不符合我的期望,因为我输入的文本稍后保存到文件中,例如类型:docx。不幸的是,使用格式从这个编辑器中提取文本很困难。 是否还有其他解决方案可以使用JavaFX中的高级功能创建文字处理?

理想情况下,它可以通过普通控件TextArea解决,而无需使用WebView。

0 个答案:

没有答案