我觉得非常愚蠢,但是当用户更改Text
或StyledText
输入字段中的插入符号时,我似乎无法通知听众。我已经尝试了SelectionListener
以及CaretListener
(仅限StyledText),但是当我使用箭头键在多行输入字段中移动插入符时,没有一个被调用。有时会调用CaretListener
,但是,例如,在选择了所有文字并点击Del
之后。{/ p>
答案 0 :(得分: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
,只要包含的文本发生更改,就会调用它。请注意,这不会用鼠标来处理位置变化。