[IDEA插件从零开始系列]-2.创建带GUI的对话框并修改文件

2021-12-23  本文已影响0人  天幻星辰

[TOC]

1. 通过IDEA GUI设计器创建窗体

image-20211222091140517

2. 显示自己设计的GUI对话框

通过DialogBuilder构建一下对话框并调用show 显示

public class MyAction extends AnAction {

    @Override
    public void actionPerformed(AnActionEvent e) {

        // 获取当前项目对象
        final Project project = e.getProject();

        // 创建GUI对象
        TestDialog testDialog = new TestDialog();
        // 构建对话框
        DialogBuilder dialogBuilder = new DialogBuilder(project);
        // 设置对话框显示内容
        dialogBuilder.setCenterPanel(testDialog.getRootPanel());
        dialogBuilder.setTitle("提示框标题"); 
        // 显示对话框
        dialogBuilder.show();

    }

}

效果如下

image-20211222100747480

3.修改当前文件内容

public class MyAction extends AnAction {

    @Override
    public void actionPerformed(AnActionEvent e) {
        // 获取当前编辑器
        final Editor editor = e.getRequiredData(CommonDataKeys.EDITOR);
        // 获取当前项目对象
        final Project project = e.getProject();
        // 获取当前光标信息
        Caret primaryCaret = editor.getCaretModel().getPrimaryCaret();
        // 创建GUI对象
        TestDialog testDialog = new TestDialog();
        // 构建对话框
        DialogBuilder dialogBuilder = new DialogBuilder(project);
        // 设置对话框显示内容
        dialogBuilder.setCenterPanel(testDialog.getRootPanel());
        dialogBuilder.setTitle("提示框标题");
        dialogBuilder.setOkOperation(()->{
            // 获取对话框中输入数据
            String inputText = testDialog.getInputText();
            // 在更新数据线程中执行 插入字符串操作
            WriteCommandAction.runWriteCommandAction(project, () ->
                    // 获取编辑器关联的文档文件 并插入字符串
                    editor.getDocument().insertString(primaryCaret.getOffset(), inputText)
            );
            // 关闭对话框
            dialogBuilder.getDialogWrapper().close(0);
        });
        // 显示对话框
        dialogBuilder.show();

    }

}
    // 获取当前编辑器
          final Editor editor = e.getRequiredData(CommonDataKeys.EDITOR);
          // 获取当前项目对象
          final Project project = e.getProject();
          // 获取当前光标信息
          Caret primaryCaret = editor.getCaretModel().getPrimaryCaret();
          // 创建GUI对象
          TestDialog testDialog = new TestDialog();
          // 构建对话框
          DialogBuilder dialogBuilder = new DialogBuilder(project);
          // 设置对话框显示内容
          dialogBuilder.setCenterPanel(testDialog.getRootPanel());
          dialogBuilder.setTitle("提示框标题");
          dialogBuilder.setOkOperation(()->{
              // 获取对话框中输入数据
              String inputText = testDialog.getInputText();
              // 在更新数据线程中执行 插入字符串操作
              WriteCommandAction.runWriteCommandAction(project, () ->
                      // 获取编辑器关联的文档文件 并替换选中的字符
                      editor.getDocument().replaceString(primaryCaret.getSelectionStart(),primaryCaret.getSelectionEnd(), inputText)
              );
              // 关闭对话框
              dialogBuilder.getDialogWrapper().close(0);
          });
          // 显示对话框
          dialogBuilder.show();
上一篇 下一篇

猜你喜欢

热点阅读