如何在 swt 中为文本编辑器实现 ctrl+backspace 和 ctrl+delete
Posted
技术标签:
【中文标题】如何在 swt 中为文本编辑器实现 ctrl+backspace 和 ctrl+delete【英文标题】:how to implement ctrl+backspace and ctrl+delete for a text edior in swt 【发布时间】:2015-02-25 11:05:14 【问题描述】:我已经创建了一个 SWT 文本编辑器,还实现了剪切、复制和粘贴功能,但现在我需要实现 CTRL + BACKSPACE,以删除前面的单词, 和 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 中实现 CTRL+BACKSPACE 和 CTRL+ DELETE功能。
【问题讨论】:
***.com/questions/11659801/… 和 ***.com/questions/5970765/… 我需要在调用监听器时如何删除前导词和前导词的逻辑。我编写了调用监听器但没有得到逻辑的代码 嗯,你的听众在哪里? 在你可以检查的问题中更新 【参考方案1】:addSelectionListener()
是这里使用的错误方法;使用addKeyListener()
,然后使用KeyAdapter
来处理事件。
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 安装全局侦听器。
至于如何删除下一个或上一个单词,请致电st.invokeAction()
和ST.DELETE_WORD_NEXT
或ST.DELETE_WORD_PREVIOUS
(org.eclipse.swt.custom.ST
)。
默认情况下,这些操作绑定到 Ctrl+BackSpace 和 Ctrl+Delete。但同样,这些键仅在小部件具有焦点时触发操作。如果无论窗口中的哪个小部件具有焦点都想启用它们,请创建一个菜单项。
【讨论】:
能不能实现invokeAction()方法以上是关于如何在 swt 中为文本编辑器实现 ctrl+backspace 和 ctrl+delete的主要内容,如果未能解决你的问题,请参考以下文章
VerifyListener 不允许 SWT 文本中的 CTRL + X 操作