2011-07-26 22 views
7

Próbowałem uzyskać numer wiersza i numer kolumny pozycji kursora w TextEditor jface. Wypróbowałem funkcję getCursorPosition(). Ale przy drukowaniu to pokazuje tylko "?". Pamiętaj, że potrzebuję numeru wiersza i numeru kolumny w edytorze, a nie w odniesieniu do ekranu. Widziałem, że istnieje funkcja JTextArea.getCaretPosition. Ale nie wiem, jak przekonwertować edytor tekstu na JTextArea. Czy można również przeczytać słowo, w którym znajduje się kursor?Jak uzyskać pozycję kursora w zaćmieniu TextEditor

Dzięki

Odpowiedz

8

od A TextEditor, można uzyskać dokument, dostawcy dokument, a wybór. To da ci dostęp do aktualnego przesunięcia kursora.

ITextEditor editor = (ITextEditor) editorPart 
     .getAdapter(ITextEditor.class); 
IDocumentProvider provider = editor.getDocumentProvider(); 
IDocument document = provider.getDocument(editorPart 
     .getEditorInput()); 
ITextSelection textSelection = (ITextSelection) editorPart 
     .getSite().getSelectionProvider().getSelection(); 
int offset = textSelection.getOffset(); 
int lineNumber = document.getLineOfOffset(offset); 

IDocument zapewnia inne sposoby, aby początkami linii (można obliczyć kolumny z tego).

Więcej informacji można znaleźć http://wiki.eclipse.org/The_Official_Eclipse_FAQs#Text_Editors

+0

buggy od konwersja nie jest sprawdzić – Chameleon

+0

pamiętać, że to nie zdobycie pozycji rzeczywistej karetki, ale z wyboru. Karetka może znajdować się na każdym końcu selekcji. – Lii

+1

Czy nie mogę uzyskać pozycji bez wybrania części w edytorze? –

Powiązane problemy