我需要实现一个文本编辑器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。