当前位置: 首页 > 知识库问答 >
问题:

如何在swt中为文本编辑器实现ctrl backspace和ctrl delete

曹茂材
2023-03-14

我已经创建了一个SWT文本编辑器,并且实现了剪切、复制和粘贴功能,但是现在我需要实现< kbd > CTRL < kbd > back space ,来删除前面的单词,还需要实现< kbd>CTRL DEL,来删除前面的单词。

复制文本的代码

private class Copy implements SelectionListener{
    public void widgetSelected(SelectionEvent event) {  
        Display.getDefault().asyncExec(new Runnable() {
            @Override
            public void run() {     
                copySelectedMessages();
            }

            private void copySelectedMessages(){
                //StringBuffer stringCopied =new StringBuffer();

                String textData = editor.getSelectionText();
                //TextTransfer textTransfer = TextTransfer.getInstance();

                System.out.println("you hv selected"+textData);

                //Clipboard clipboard = new Clipboard(Display.getDefault());
                TextTransfer transfer = TextTransfer.getInstance();      
                clipboard.setContents(new Object[] { textData }, new TextTransfer[] { transfer });
            }
        });
    }
}

编辑器的代码

editor = new StyledText( this, SWT.MULTI | SWT.V_SCROLL );
editor.setLayoutData( new GridData(GridData.FILL_BOTH) );
editor.setFont( new Font(Display.getDefault(),"Cambria", 10, SWT.NORMAL) );

听众

proceeding.addSelectionListener(new proceed());

private class proceed implements SelectionListener{
    public void widgetSelected(SelectionEvent event) {      
        Display.getDefault().asyncExec(new Runnable() {
            @Override
            public void run() {      
                // Code to check for CTRL + backspace and CTRL + delete
            }
    });
}

那么现在如何在SWT中实现< kbd>CTRL 退格键和< kbd>CTRL 删除功能呢?

共有1个答案

席俊达
2023-03-14

添加选择通知()是在这里使用的错误方法;使用加密钥接收器()密钥适配器来处理事件。

java2s有一个例子:http://www.java2s.com/Code/JavaAPI/org.eclipse.swt.custom/StyledTextaddKeyListenerKeyListenerkey.htm

或者在这里找到一个更完整的:http://www.java2s.com/Tutorial/Java/0280__SWT/Asimpleeditor.htm

实现“复制到剪贴板”的代码不是必需的,因为StyledText已经实现了这一点。只需调用Copy()方法。第二个示例显示如何通过菜单项为Ctrl C安装全局侦听器。

至于如何删除下一个或上一个单词,请调用<code>st。invokeAction()与ST。DELETE_WORD_NEXTST。DELETE_WORD_PREVIOUSorg.eclipse.swt.custom.ST)。

默认情况下,这些操作绑定到 Ctrl 退格键Ctrl 删除。但同样,这些键仅在小部件具有焦点时触发操作。如果要启用它们,无论窗口中的哪个小部件具有焦点,请创建一个菜单项。

 类似资料:
  • 问题内容: 我的项目的一部分是编写一个文本编辑器,该文本编辑器用于键入一些规则,编译我的应用程序并运行它。编写编译器是结束并发布beta版。在最终版本中,我们必须将撤消和重做添加到文本编辑器中。我使用一个文件,并定期将其保存为文本编辑器。如何设计文本编辑器的撤消和重做?文件的持久性结构发生了什么变化? 问题答案: 您可以将操作建模为命令,并保存在两个堆栈中。一个用于撤消,另一个用于重做。您可以编写

  • 本文向大家介绍C语言实现文本编辑器系统,包括了C语言实现文本编辑器系统的使用技巧和注意事项,需要的朋友参考一下  本文实例为大家分享了C语言实现文本编辑器系统的具体代码,供大家参考,具体内容如下 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持呐喊教程。

  • 我的项目中原来写文章使用的是富文本编辑器,现在想加入markdown编辑器,在用户发表文章的时候可以选择编辑器进行编辑。这样就涉及到一个问题,如果是对于已经使用bbcode发表的文章来说,进行编辑,假如允许用户编辑的时候也可以切换编辑器,那么就要写一套bbcode 和 markdown 语法互转的程序,看了一下bbcode 和 markdown 编辑器中的语法没法完全对的上,如果硬写的话,需要特别

  • 我正在android studio中使用java开发和应用程序,希望在RecyclerView函数中编辑文本。我该怎么做?

  • 我使用。我想修改一个。Colab中的py文件。所以我使用了如此处所示(如何将文本文件(.py)加载/编辑/运行/保存到IPython笔记本单元?)。但每当我运行这个命令时,我都会在一段时间后断开连接。我想知道是否还有其他方法可以编辑。py文件,无需经历下载到pc、编辑然后重新上传的麻烦。提前谢谢。