2013-04-08 68 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每當發生變更包含的文本被調用。請注意,這不會考慮鼠標位置的變化。