如何在 Eclipse 的 TextEditor 中获取光标位置

8
我一直在尝试获取jface TextEditor中光标位置的行号和列号。我尝试了getCursorPosition()函数。但打印此函数只显示“?”。请注意,我需要编辑器内部的行号和列号,而不是相对于屏幕的。 我看到有一个函数JTextArea.getCaretPosition。但我不知道如何将文本编辑器转换为JTextArea。 此外,是否可以读取光标所在单词?
谢谢
1个回答

9

通过文本编辑器,您可以获取文档、文档提供程序和选择内容。这将使您能够访问当前光标偏移量。

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提供了其他方法来获取行的起始位置(您可以从中计算列)。

更多信息请参见http://wiki.eclipse.org/The_Official_Eclipse_FAQs#Text_Editors


转换后有漏洞,因为未进行检查。 - Chameleon
请注意,这并不是获取实际插入符的位置,而是选择区域的位置。插入符可以位于选择区域的任一端。 - Lii
1
我能否在编辑器中不选择任何部分而直接获取位置? - Masud Rahman
据我所知,getSelection()返回数据结构,在光标位于编辑器中以及存在选择时均有效。 - Paul Webster
getSelection() 提供了最后的选择位置。如果您清除它并将光标移动到其他位置,您仍将获得最后的选择位置,这与光标完全无关。 - Christian

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接