idea 插件 com.intellij.openapi.ui.DialogWrapper 详解

83 阅读1分钟

com.intellij.openapi.ui.DialogWrapper是IntelliJ平台中用于创建对话框的基类,主要用于显示模式对话框和一些非模式对话框。以下是其核心功能和使用方法的详解:

主要功能

  1. 标准化按钮布局‌:自动处理不同操作系统下的按钮顺序(如macOS的"帮助"按钮位置)。
  2. 验证机制‌:支持非模式验证,当输入无效数据时可显示错误消息。
  3. 快捷键支持‌:内置Esc(关闭)、左右箭头(切换按钮)、Y/N(是/否操作)等快捷键。
  4. 可选复选框‌:可添加"不再询问"等复选框选项。

核心方法

  • createCenterPanel() ‌:必须重写的方法,返回对话框的主内容面板(通常与GUI设计器绑定的JPanel)。
  • show()/showAndGet():显示对话框并获取用户操作结果(通过getExitCode()判断关闭方式)。
  • createActions() :自定义对话框按钮(如替换默认的"确定"/"取消"按钮)。

使用示例

典型开发流程:

  1. 继承DialogWrapper并绑定GUI设计器窗体1。
  2. 通过createCenterPanel()返回设计好的内容面板1。
  3. 调用showAndGet()显示对话框并处理结果1。

扩展应用

  • 自定义JS对话框‌:结合CefJSDialogHandler可重写网页中的alert/confirm等原生弹窗样式2。
  • 数据收集对话框‌:常用于插件中获取用户输入(如生成序列号、模块配置等)67。

注意事项

  • 对话框通常与AnAction配合使用,通过事件触发37。
  • 建议使用DialogWrapperExitAction作为关闭对话框的按钮基类1。

如需完整代码示例,可参考搜索结果中的具体实现案例16。