检测文本控件中的插入符移动

时间:2013-04-08 09:48:28

标签: java swt listener caret

我觉得非常愚蠢,但是当用户更改TextStyledText输入字段中的插入符号时,我似乎无法通知听众。我已经尝试了SelectionListener以及CaretListener(仅限StyledText),但是当我使用箭头键在多行输入字段中移动插入符时,没有一个被调用。有时会调用CaretListener,但是,例如,在选择了所有文字并点击Del之后。{/ p>

1 个答案:

答案 0 :(得分:0)

聆听SWT.MouseUpSWT.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,只要包含的文本发生更改,就会调用它。请注意,这不会用鼠标来处理位置变化。