我正在编写自己的Netbeans插件来编辑打开的文件。我已设法使用
获取有关当前活动文件的一些信息TopComponent activeTC = TopComponent.getRegistry().getActivated();
FileObject fo = activeTC.getLookup().lookup(FileObject.class);
io.getOut().println(fo.getNameExt());
io.getOut().println(fo.canWrite());
io.getOut().println(fo.asText());
但我不知道如何修改此文件。有人可以帮我弄这个吗? 第二个问题,如何获得文本选择范围?我只想在选定的文本上运行我的命令。
答案 0 :(得分:1)
要修改文件,您可以使用NetBeans org.openide.filesystems.FileUtil.toFile(),然后使用常规Java内容来读取和写入文件,并获取当前编辑器窗口的选定文本,您将不得不这样做类似的东西:
Node[] arr = activeTC.getActivatedNodes();
for (int j = 0; j < arr.length; j++) {
EditorCookie ec = (EditorCookie) arr[j].getCookie(EditorCookie.class);
if (ec != null) {
JEditorPane[] panes = ec.getOpenedPanes();
if (panes != null) {
// USE panes
}
}
}
有关更多代码示例,请参阅here
答案 1 :(得分:0)
经过几个小时的研究后我发现:
我在Question中发布的代码可用于获取有关活动文件的基本信息。
要获得插入位置或获得选择范围,您可以这样做:
JTextComponent editor = EditorRegistry.lastFocusedComponent();
io.getOut().println("Caret pos: "+ editor.getCaretPosition());
io.getOut().println("Selection start: "+ editor.getSelectionStart());
io.getOut().println("Selection end: "+ editor.getSelectionEnd());
要修改活动文件的内容(通过Ctrl + z修改可以撤消的方式),您可以使用以下代码:
final StyledDocument doc = context.openDocument();
NbDocument.runAtomicAsUser(doc, new Runnable() {
public void run() {
try {
doc.insertString(ofset, "New text.", SimpleAttributeSet.EMPTY);
} catch (Exception e) {
}
}
});