1
정말 바보 같지만 사용자가 Text
또는 StyledText
입력 필드에서 캐럿을 변경할 때 청취자에게 알릴 수없는 것 같습니다. SelectionListener
과 CaretListener
(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.MouseUp
및 SWT.KeyUp
듣기