2013-04-08 2 views
1

정말 바보 같지만 사용자가 Text 또는 StyledText 입력 필드에서 캐럿을 변경할 때 청취자에게 알릴 수없는 것 같습니다. SelectionListenerCaretListener (StyledText에만 해당)을 시도했지만 화살표 키를 사용하여 여러 줄 입력 필드에서 캐럿을 이동할 때 신뢰할 수있는 호출이 없습니다. CaretListener이 가끔 호출되지만, 예를 들어 모든 텍스트를 선택하고 Del을 누르는 경우가 아닙니다.텍스트 컨트롤에서 캐럿 이동 감지

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.MouseUpSWT.KeyUp 듣기

답변

0

귀하의 경우 이동하는 방법을 것 같다 .


또 다른 매우 편리 이벤트는 변경이 포함 된 텍스트에 발생 때마다라고 SWT.Verify입니다. 이것은 마우스로 위치 변경을 처리하지 않습니다.