我正在开发一个小型JavaFX应用程序。我想嵌入一个Lua编辑器。我正在通过WebView节点在我的应用程序中使用ACE编辑器。编辑器完美加载;但是,我不能通过鼠标事件和键盘事件粘贴任何文本,无论文本是从哪里复制的。这是已知的虫子吗?
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>
Java代码段:
@FXML
private WebView scriptEditor;
private void initializeCardScript() {
scriptEditor.getEngine().load("path to HTML file");
}
在JoséPereda的建议下,我能够通过Ctrl+V键事件粘贴文本。但我无法用鼠标单击复制/剪切/粘贴对话框粘贴。
通过创建一个从Javascript到Java的沟通桥梁,我完全解决了我的问题。我在ACE Editor中对粘贴事件调用一个Java方法。
Java代码段:
private void initializeCardScript() {
scriptEditor.getEngine().load("path to HTML file");
((JSObject) scriptEditor.getEngine().executeScript("window")).setMember("java", new Object() {
public void paste() {
String content = (String) Clipboard.getSystemClipboard().getContent(DataFormat.PLAIN_TEXT);
if (content != null) {
scriptEditor.getEngine().executeScript("editor.onPaste(\"" + content.replace("\n", "\\n") + "\");");
}
}
});
}
ace.js:
var onPaste = function(e) {
java.paste();
// var data = handleClipboardData(e);
// if (typeof data == "string") {
// if (data)
// host.onPaste(data, e);
// if (useragent.isIE)
// setTimeout(resetSelection);
// event.preventDefault(e);
// }
// else {
// text.value = "";
// pasted = true;
// }
};
资料来源:
https://stackoverflow.com/A/25676561/3956070
https://blogs.oracle.com/javafx/entry/communication_between_javascript_and_javafx
ACE 是一个实现了语法着色功能的基于 Web 的代码编辑器,具有良好的代码提示功能和大量的主题,所以在 Web 端你想拥有一个编辑器,ACE 是不二选择。 官网:https://ace.c9.io/
我正在我的网站上使用Ace编辑器(到目前为止已经很棒了!)。我需要捕捉编辑更改的每一个时刻的一些文本。我给编辑器的id是“ACE_JavaScript_Editor”。当我使用: 每当我向编辑器添加文本时,它就会激发,但当我在编辑器中删除文本时,它不会激发。对于一个看似简单的问题,我还没有找到一个优雅的解决方案。根据我的经验和我在网上读到的东西,“KeyUp”和“KeyDown”在Ace edit
我正在测试ace-editor显示服务器上的大型文本文件。由于它吹嘘能够处理高达4百万行的文件,并且具有文本高亮显示功能,这使它成为一个很好的候选者。 我一直在努力理解Ace Editor的文档和EditSession。根据我的理解,它可以告诉ace editor从一个文件中读取并显示它。 我正在使用createEditSessiont()创建会话并指定文档。在api文档中: createEdit
我有一个生成Word文档的Excel工作簿。它会将Excel图像复制到生成的Word文档的标题中。此代码已在Office 2003、2007和2010中运行,但现在在2013年,它在粘贴语句上失败,在粘贴方法中出现了一个通用的自动化错误。我希望有人能帮我在Office 2013中完成这项工作。若要复制,请使用包含单个形状的名为“徽标”的工作表定义宏工作簿,添加以下代码,然后执行doctop子例程:
结果如下: 我可以做什么来使这个返回'somefunc_linux'?。Clang似乎做得很对,顺便说一句。
我使用重定向脚本将行复制到新的电子表格。当我输入正确的单元格值(“一次性服务”进入第3列)时,工作正常。但是我有我的电子表格与Zapier链接,当值被Zap/粘贴进去时,该行不会被复制。