根据注释续写代码 用字符变量value的值 替换选中的一行或多行代码 并实现编辑框代码逐个字符自动生成的特效 并且实时刷新UI Override public void actionPerformedNotNull AnActionEvent e
// 获取当前编辑器 Editor editor = e.getData(CommonDataKeys.EDITOR); if (editor == null) { return; } // 获取当前选中的文本 String selectedText = editor.getSelectionModel().getSelectedText(); if (selectedText == null) { return; } // 用字符变量value的值替换选中的文本 String value = "Hello World"; editor.getDocument().replaceString(editor.getSelectionModel().getSelectionStart(), editor.getSelectionModel().getSelectionEnd(), value); // 获取选中文本的起始行和结束行 int startLine = editor.getDocument().getLineNumber(editor.getSelectionModel().getSelectionStart()); int endLine = editor.getDocument().getLineNumber(editor.getSelectionModel().getSelectionEnd());
// 自动输入字符并实时刷新UI
int offset = editor.getSelectionModel().getSelectionStart();
for (char c : value.toCharArray()) {
editor.getDocument().insertString(offset, String.valueOf(c));
offset++;
editor.getSelectionModel().setSelection(offset, offset);
editor.getScrollingModel().scrollToCaret(ScrollType.RELATIVE);
editor.getContentComponent().repaint();
try {
Thread.sleep(50);
} catch (InterruptedException ex) {
ex.printStackTrace();
}
}
// 重新选中替换后的文本
int newStartOffset = editor.getDocument().getLineStartOffset(startLine);
int newEndOffset = editor.getDocument().getLineEndOffset(endLine);
editor.getSelectionModel().setSelection(newStartOffset, newEndOffset);
}
原文地址: https://www.cveoy.top/t/topic/bsGQ 著作权归作者所有。请勿转载和采集!