• IDEA插件开发(20)--Editor Components


    编辑器文本字段
    与SwingJTextArea相比,IntelliJ 平台的编辑器组件有很多优势:语法高亮支持、代码完成、代码折叠等等。编辑器通常显示在编辑器选项卡中,但它们也可以嵌入对话框或工具窗口中。这是由EditorTextField组件启用的。

    可以指定以下属性:

    解析文本字段中的文本所依据的文件类型;

    文本字段是只读的还是可编辑的;

    文本字段是单行还是多行。

    通过子类化、覆盖createEditor()和应用EditorCustomization. 存在几种常用的定制实现,包括:

    SpellCheckingEditorCustomization禁用拼写检查

    HorizontalScrollBarEditorCustomization打开/关闭水平滚动条

    ErrorStripeEditorCustomization打开/关闭右侧的错误条纹

    EditorTextField有许多子类,可根据需要用于附加功能。

    如果您想将编辑器用作对话框中的输入字段,请考虑使用LanguageTextField,它提供了更易于访问的 API。

    如果要向编辑器添加自动完成功能,请使用TextFieldWithCompletion. TextCompletionProvider构造函数将实现以提供自动完成变体的类作为参数。用于TextFieldCompletionProvider创建您自己的提供程序。为此,addCompletionVariants()使用 覆盖并添加完成变体CompletionResultSet.addElement()。

    TextFieldCompletionProviderDumbAware即使在索引阶段,也请参阅完成。

    请参阅代码完成以了解有关完成的更多信息。

    爪哇
    一个常见的用例EditorTextField是输入 Java 类或包的名称。这可以通过以下步骤来完成:

    用于JavaCodeFragmentFactory.createReferenceCodeFragment()创建代表类或包名的代码片段;

    调用PsiDocumentManager.getDocument()获取代码片段对应的文档;

    将返回的文档传递给EditorTextField构造函数或其setDocument()方法。

    PsiFile psiFile = PsiDocumentManager.getInstance(project)
    .getPsiFile(editor.getDocument());
    PsiElement element = psiFile.findElementAt(editor.getCaretModel().getOffset());

    PsiExpressionCodeFragment code =
    JavaCodeFragmentFactory.getInstance(project)
    .createExpressionCodeFragment(“”, element, null, true);

    Document document =
    PsiDocumentManager.getInstance(project).getDocument(code);

    EditorTextField myInput =
    new EditorTextField(document, project, JavaFileType.INSTANCE);
    如果您的插件依赖于 Java 功能并针对 2019.2 或更高版本,请确保按照此博客文章中的步骤进行操作。

    提示:

    创建多个字段时,需要两个单独的文档。这是通过使用PsiExpressionCodeFragment.

    setText()不再适用于输入字段。但是,createExpressionCodeFragment()接受该字段的文本作为参数。可以替换空字符串并创建一个新文档来代替setText().

    GUI 构建器中的实例JTextField可以在您的 IDE 中使用右键单击替换为自定义替换组件。确保使用“自定义创建”,以便初始化代码正常工作。

  • 相关阅读:
    查看linux系统情况常用命令
    nodejs+vue中医体质的社区居民健康管理系统elementui
    2022年湖北省自然科学基金计划项目申请条件、要求和项目类型
    Typora文件拷贝另一台电脑后文件中插入的图片失效
    07-JVM内存逃逸分析与实践
    记录一次wls2上ubuntu20.04版本中安装docker
    git常见bug及其解决方案
    `THREE.AudioAnalyser` 音频分析
    【管理运筹学】背诵手册(四)| 整数规划
    【Node.js】session认证原理和JWT认证原理
  • 原文地址:https://blog.csdn.net/jiangguilong2000/article/details/126062153