什么是适用于Eclipse SWT Text的侦听器?

时间:2012-10-26 19:05:35

标签: java eclipse-plugin swt

我有一个这类org.eclipse.swt.widgets.Text的类。它存在于我正在开发的eclipse插件中。我想处理用户从此字段中选择文本的事件。这是......在聚焦时,他们点击一些文本并向左或向右拖动以选择文本。选择此文本时,就是我需要触发我的事件。

我无法找到合适的听众来满足我的需要。

2 个答案:

答案 0 :(得分:8)

我认为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 ();
}

如果用户真的选择了某些内容,此代码将仅打印选择。如果它是一个没有选择的鼠标按键,则不会发生任何事情。

您可能希望将两者合并在一个侦听器中以节省空间。

答案 1 :(得分:1)

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

public void addSelectionListener(SelectionListener listener)
  

添加选择侦听器。当用户更改选择时,窗口小部件将发送选择事件。   调用widgetSelected时,事件x和y字段包含选择的开始和结束符号索引。不为StyledTexts调用widgetDefaultSelected。

相关问题