1

Text我觉得真的很愚蠢,但是当用户更改或StyledText输入字段中的插入符号时,我似乎无法通知侦听器。我已经尝试过SelectionListenerCaretListener仅限 StyledText),但是当我使用箭头键在多行输入字段内移动插入符号时,没有一个可靠调用。CaretListener有时会被调用,但是,例如,在选择所有文本并点击之后不会被调用Del

4

1 回答 1

0

在你的情况下,听SWT.MouseUp并且SWT.KeyUp似乎是要走的路:

public static void main(String[] args)
{
    Display display = new Display();
    Shell shell = new Shell(display);

    shell.setLayout(new FillLayout());

    Text text = new Text(shell, SWT.BORDER);

    Listener listener = new Listener()
    {
        @Override
        public void handleEvent(Event arg0)
        {
            System.out.println("Event");
        }
    };

    text.addListener(SWT.KeyUp, listener);
    text.addListener(SWT.MouseUp, listener);

    shell.pack();
    shell.open();

    while (!shell.isDisposed()) {
      if (!display.readAndDispatch())
        display.sleep();
    }
    display.dispose(); 
}

您可以使用变量跟踪旧的插入符号位置,static并将其与Listener.


另一个非常方便的事件是SWT.Verify每当包含的文本发生更改时调用。请注意,这不会处理鼠标的位置变化。

于 2013-04-08T10:11:50.027 回答