什么是适当的侦听器来使用Eclipse的SWT文本?(What is the appropriate

2019-09-29 11:56发布

我有一类这种类型的org.eclipse.swt.widgets.Text 。 它生活一个Eclipse插件,我发展的内部。 我想处理,其中用户从该领域内选择文本事件。 也就是说......而专注,他们点击进入一些文本并拖动左或右选择文本。 当选择了这样的文字,那是当我需要我的火灾事件。

我还没有找到合适的听众覆盖我的需要。

Answer 1:

我想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键式无选择,什么都不会发生。

你可能想都在一个监听器结合起来,节省空间。



Answer 2:

为了得到文本选择,你应该考虑使用org.eclipse.swt.custom.StyledText。 您需要注册一个选择侦听器。 见下文:

public void addSelectionListener(SelectionListener listener)

添加一个选择侦听器。 选择事件由小部件,当用户更改选择发送。 当widgetSelected被调用时,事件x和y字段包含选择的开始和结束插入符号指数。 widgetDefaultSelected不会调用StyledTexts。



文章来源: What is the appropriate listener to use for Eclipse SWT Text?