【问题标题】:Copy and paste in codemirror.js embeded in javafx application复制并粘贴到嵌入在 javafx 应用程序中的 codemirror.js
【发布时间】:2012-12-18 08:55:35
【问题描述】:

我正在使用 codemirror.js 库在 Java FX 中创建简单的编辑器。 我使用 javafx.scene.web.WebView 组件将 codemirror 编辑器嵌入到 javafx 中,并带有以下 html/js 代码:

<body>
<form>
   <textarea id="code" name="code">
   </textarea>
</form>
<script>
   var editor = CodeMirror.fromTextArea(document.getElementById("code"), { lineNumbers: true});
</script>
</body>

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

我的应用程序中还有 javafx 主菜单,我想向其中添加复制或粘贴等操作。我想以某种方式将这个菜单操作与我的代码镜像编辑器“绑定”,所以如果用户点击例如从主菜单粘贴,剪贴板中的内容将被添加到代码镜像编辑器中。

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

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

任何帮助表示赞赏并提前致谢。

【问题讨论】:

    标签: java javascript javafx clipboard codemirror


    【解决方案1】:

    我找到了解决方案: 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));
    }
    

    【讨论】:

      猜你喜欢
      • 2013-12-27
      • 2015-03-25
      • 1970-01-01
      • 2021-09-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多