我正在使用codemirror.js库在Java FX中创建简单的编辑器.我使用javafx.scene.web.WebView组件在javafx中嵌入了codemirror编辑器,其中包含以下html/js代码:
<body>
<form>
<textarea id="code" name="code">
</textarea>
</form>
<script>
var editor = CodeMirror.fromTextArea(document.getElementById("code"), { lineNumbers: true});
</script>
</body>
Run Code Online (Sandbox Code Playgroud)
Codemirror编辑器本身支持撤消,重做,剪切,复制和粘贴.
我的应用程序中还有javafx主菜单,我想添加复制或粘贴等操作.我想以某种方式"绑定"这个菜单操作与我的codemirror编辑器,所以如果用户点击例如从主菜单粘贴,剪贴板中的内容将被添加到codemirror编辑器.
我解决了undo和redo操作的问题:codemirror有两个js函数undo()和redo(),我可以通过javafx.scene.web.WebView.executeScript方法从java级别调用它们.
我的问题是如何处理剪切,复制和粘贴操作?如何使用codemirror编辑器将此操作与主菜单绑定?我在codemirror.js中找不到任何可以处理此操作的js函数.
任何帮助表示赞赏和感谢.
我正在开发一个小型JavaFX应用程序.我想嵌入一个Lua编辑器.我在我的应用程序中通过WebView节点使用ACE Editor.编辑器加载完美; 但是,无论文本的复制位置如何,我都无法通过鼠标事件和键盘事件粘贴任何文本.这是一个已知的错误?
HTML文件:
<!DOCTYPE html>
<html lang="en">
<head>
<title>Lua Editor</title>
<style type="text/css" media="screen">
#editor {
position: absolute;
top: 0;
right: 0;
bottom: 0;
left: 0;
}
</style>
</head>
<body>
<div id="editor"></div>
<script src="ace.js" type="text/javascript" charset="utf-8"></script>
<script>
var editor = ace.edit("editor");
editor.getSession().setMode("ace/mode/lua");
editor.setOptions({
fontSize: "11pt"
});
</script>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
Java代码片段:
@FXML
private WebView scriptEditor;
private void initializeCardScript() {
scriptEditor.getEngine().load("path to HTML file");
}
Run Code Online (Sandbox Code Playgroud) clipboard ×2
ace-editor ×1
codemirror ×1
java ×1
javafx ×1
javafx-8 ×1
javascript ×1
paste ×1
webview ×1