我有一类这种类型的org.eclipse.swt.widgets.Text
。 它生活一个Eclipse插件,我发展的内部。 我想处理,其中用户从该领域内选择文本事件。 也就是说......而专注,他们点击进入一些文本并拖动左或右选择文本。 当选择了这样的文字,那是当我需要我的火灾事件。
我还没有找到合适的听众覆盖我的需要。
我有一类这种类型的org.eclipse.swt.widgets.Text
。 它生活一个Eclipse插件,我发展的内部。 我想处理,其中用户从该领域内选择文本事件。 也就是说......而专注,他们点击进入一些文本并拖动左或右选择文本。 当选择了这样的文字,那是当我需要我的火灾事件。
我还没有找到合适的听众覆盖我的需要。
我想SWT.MouseUp
是你正在寻找的事件。 如果您要检查“箭头键和换档选择”,听SWT.KeyUp
以及和检查keyCode
事件:
public static void main(String[] args) {
final Display display = new Display();
final Shell shell = new Shell(display);
shell.setLayout(new GridLayout(1, false));
Text text = new Text(shell, SWT.BORDER);
text.setText("BLABLABLA");
text.addListener(SWT.MouseUp, new Listener() {
@Override
public void handleEvent(Event event) {
Text text = (Text) event.widget;
String selection = text.getSelectionText();
if(selection.length() > 0)
{
System.out.println("Selected text: " + selection);
}
}
});
text.addListener(SWT.KeyUp, new Listener() {
@Override
public void handleEvent(Event event) {
Text text = (Text) event.widget;
String selection = text.getSelectionText();
if(selection.length() > 0 && event.keyCode == SWT.SHIFT)
{
System.out.println("Selected text: " + selection);
}
}
});
shell.pack();
shell.open ();
while (!shell.isDisposed ()) {
if (!display.readAndDispatch ()) display.sleep ();
}
display.dispose ();
}
此代码将只打印选择,如果用户真的选择的东西。 如果它是一个鼠标向上o键式无选择,什么都不会发生。
你可能想都在一个监听器结合起来,节省空间。
为了得到文本选择,你应该考虑使用org.eclipse.swt.custom.StyledText。 您需要注册一个选择侦听器。 见下文:
public void addSelectionListener(SelectionListener listener)
添加一个选择侦听器。 选择事件由小部件,当用户更改选择发送。 当widgetSelected被调用时,事件x和y字段包含选择的开始和结束插入符号指数。 widgetDefaultSelected不会调用StyledTexts。