[TOC]
1. 通过IDEA GUI设计器创建窗体
- 新建 GUI窗体
-
填写窗体基本信息
image-20211222091416137 -
向UI中添加组件
- 添加一个 文本组件和输入框组件
- 并设置Jpanel 和 JTextField 组件的 FieldName 信息,这样就可以在TestDialog对象中引用到该组件了
- 点击组件的显示专家属性 设置Jpanel的最小宽高
-
在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-202112221007474803.修改当前文件内容
- 向当前光标处插入 输入的内容
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();
网友评论