复制并粘贴到嵌入Javafx应用程序的codemirror.js中

我正在使用codemirror.js库在Java FX中创建简单的编辑器。我使用以下html /

js代码,使用javafx.scene.web.WebView组件在Javafx中嵌入了Codemirror编辑器:

<body>

<form>

<textarea id="code" name="code">

</textarea>

</form>

<script>

var editor = CodeMirror.fromTextArea(document.getElementById("code"), { lineNumbers: true});

</script>

</body>

Codemirror编辑器本身支持撤消,重做,剪切,复制和粘贴。

我的应用程序中也有javafx主菜单,我想向其中添加复制或粘贴之类的操作。我想以某种方式与我的Codemirror编辑器“绑定”此菜单动作,因此,如果用户单击例如从主菜单粘贴,剪贴板中的内容将添加到Codemirror编辑器。

我为撤消和重做操作解决了这个问题:codemirror有两个js函数undo()和redo(),我可以通过javafx.scene.web.WebView.executeScript方法从Java级别调用它们。

我的问题是如何处理剪切,复制和粘贴操作?如何使用Codemirror编辑器从主菜单绑定此操作?我在codemirror.js中找不到可以处理此操作的任何js函数。

任何帮助表示赞赏,并在此先感谢。

回答:

我找到了解决方案:Codmirror在API中没有剪切,复制和粘贴等功能,但是它允许获取和替换选定的文本,因此我可以自己编写这些操作。

public void cut() {

String selectedText = (String) webview.getEngine().executeScript(

"editor.getSelection();");

webview.getEngine().executeScript("editor.replaceSelection(\"\");");

final Clipboard clipboard = Clipboard.getSystemClipboard();

final ClipboardContent content = new ClipboardContent();

content.putString(selectedText);

clipboard.setContent(content);

}

public void copy() {

String selectedText = (String) webview.getEngine().executeScript(

"editor.getSelection();");

final Clipboard clipboard = Clipboard.getSystemClipboard();

final ClipboardContent content = new ClipboardContent();

content.putString(selectedText);

clipboard.setContent(content);

}

public void paste() {

final Clipboard clipboard = Clipboard.getSystemClipboard();

String content = (String) clipboard.getContent(DataFormat.PLAIN_TEXT);

webview.getEngine().executeScript(String.format("editor.replaceSelection(\"%s\");", content));

}

以上是 复制并粘贴到嵌入Javafx应用程序的codemirror.js中 的全部内容, 来源链接: utcz.com/qa/400053.html

回到顶部