2013-04-08 80 views
1

我觉得真的很愚蠢,但我似乎无法在用户更改TextStyledText输入字段中的插入符号时收到通知。我试过SelectionListener以及CaretListener(仅适用于StyledText),但是当我使用箭头键在多行输入字段中移动插入符号时,没有人可靠地调用它。 CaretListener有时会被调用,但是,例如,在选择了所有文本并点击了Del之后。在Text控件中检测插入符号移动

回答

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每当发生变更包含的文本被调用。请注意,这不会考虑鼠标位置的变化。

相关问题