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

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

作者: 天幻星辰 | 来源:发表于2021-12-23 10:11 被阅读0次

[TOC]

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

  • 新建 GUI窗体
image-20211222091140517
  • 填写窗体基本信息

    image-20211222091416137
  • 向UI中添加组件

    • 添加一个 文本组件和输入框组件
    • 并设置Jpanel 和 JTextField 组件的 FieldName 信息,这样就可以在TestDialog对象中引用到该组件了
    • 点击组件的显示专家属性 设置Jpanel的最小宽高
    image-20211222095924047
  • 在TestDialog 添加相关功能

    public class TestDialog {
        private JPanel rootPanel;
        private JTextField searchText;
    
        public JPanel getRootPanel() {
            return rootPanel;
        }
        // 获取输入框内容
        public String getInputText(){
            return searchText.getText();
        }
    }
    

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();

相关文章

网友评论

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

      本文链接:https://www.haomeiwen.com/subject/rmlhqrtx.html