idea-插件开发 Dialogs

超、凢脫俗 2022-12-18 11:00 841阅读 0赞

文章目录

  • 前言
  • 一、DialogWrapper
  • 二、使用 DialogWrapper
      1. 简单小案例
      • 1.1 定义dialog
      • 1.2 使用dialog
    1. 默认 dialog
    • 2.1 com.intellij.openapi.ui.Messages
  • 总结

前言

Dialogs (对话框), 在图形用户界面中,对话框(又称对话方块[1])是一种特殊的视窗, 用来在用户界面中向用户显示信息,或者在需要的时候获得用户的输入响应。之所以称之为“对话框”是因为它们使计算机和用户之间构成了一个对话——或者是通知用户一些信息,或者是请求用户的输入,或者两者皆有。

在这里插入图片描述


一、DialogWrapper

DialogWrapper是一个基类,应该用于IntelliJ平台中显示的所有模式对话框(以及一些非模式对话框)。

它提供以下功能

  • 按钮布局(确定/取消按钮的平台特定顺序,macOS特定的帮助按钮)
  • 非模式验证(当输入到对话框的数据无效时显示错误消息文本)
  • 快捷键支持 (esc (退出), Left/Right(按钮切换), Y/N (如果对话框中存在是/否操作,则为Y/N))
  • 可选“不再询问”复选框

DialogWrapper类通常与GUI设计器窗体一起使用。在本例中,将GUI设计器窗体绑定到类扩展DialogWrapper,将窗体的顶层面板绑定到一个字段,然后从createCenterPanel()方法返回该字段。

要显示对话框,请调用show()方法,然后使用getExitCode()方法检查对话框是如何关闭的。showAndGet()方法可用于组合这两个调用。

扩展功能

  • 要自定义对话框中显示的按钮(替换标准的“确定”/“取消”/“帮助”按钮),需要重写createActions()或createLeftActions()方法。这两个方法都返回一个Swing动作对象数组。如果某个按钮关闭了对话框,请使用DialogWrapperExitAction作为操作的基类。使用动作.putValue(DialogWrapper.DEFAULT_ACTION,true)设置默认按钮。
  • 要验证输入到对话框中的数据,请重写doValidate()方法。计时器将自动调用该方法。如果当前输入的数据有效,则返回null。否则,返回封装错误消息的ValidationInfo对象和与无效数据关联的可选组件。当指定一个组件时,一个错误图标将显示在它旁边,当用户试图调用OK操作时,它将被聚焦。

二、使用 DialogWrapper

1. 简单小案例

代码如下(示例):

1.1 定义dialog

  1. public class SampleDialogWrapper extends DialogWrapper {
  2. public SampleDialogWrapper() {
  3. super(true); // use current window as parent
  4. init();
  5. setTitle("Test DialogWrapper");
  6. }
  7. /** * 自定义提示组件 * * @return JComponent */
  8. @Nullable
  9. @Override
  10. protected JComponent createCenterPanel() {
  11. JPanel dialogPanel = new JPanel(new BorderLayout());
  12. JLabel label = new JLabel("testing");
  13. label.setPreferredSize(new Dimension(100, 100));
  14. dialogPanel.add(label, BorderLayout.CENTER);
  15. return dialogPanel;
  16. }
  17. }

1.2 使用dialog

  1. if (new SampleDialogWrapper().showAndGet()) {
  2. // user pressed OK
  3. }

2. 默认 dialog

也可以使用idea默认的dialog,简单方便,主要是不用自己写!只要不是自己写的就怎么都是香的 ~ . ~

2.1 com.intellij.openapi.ui.Messages

这是 JetBrains 提供的工具类,官方介绍如下
Provides several default notification dialogs (“OK|Cancel”) as well as simple input dialogs.(提供几个默认的通知对话框(“确定|取消”)以及简单的输入对话框。)

下面是这个类一些简单的方法 — 看看方法名就大概知道啥功能
在这里插入图片描述

代码如下(示例):

类似文本域输入框

  1. // 方法参数如下
  2. public static @NlsSafe String showMultilineInputDialog(Project project,
  3. @DialogMessage String message,
  4. @DialogTitle String title,
  5. @Nullable @NonNls String initialValue,
  6. @Nullable Icon icon,
  7. @Nullable InputValidator validator)
  8. // 调用方法如下
  9. // userInput
  10. String strMysqlColumns = Messages.showMultilineInputDialog(project, "Enter the column you need to add salt",
  11. "xyang", "example:\n" +
  12. "\t user_id,\n " +
  13. "\t user_name", Messages.getInformationIcon(), null);

实际效果
在这里插入图片描述

可能有小伙伴可能会疑惑,Project 这个参数…不明白的建议看看我前俩篇文章

  • idea 自定义插件 工具面板
  • IDEA-插件开发 入门篇

单行输入框

  1. // 方法如下
  2. public static @NlsSafe String showInputDialog(@Nullable Project project,
  3. @DialogMessage String message,
  4. @DialogTitle String title,
  5. @Nullable Icon icon)
  6. // 调用逻辑如下
  7. String prefix = Messages.showInputDialog(project, "Enter the prefix you need to add",
  8. "xyang", Messages.getInformationIcon());

实际效果如下
在这里插入图片描述


总结

还有很多各种各样的 dialogs,这里就不一一演示了,很多方法看方法名都大概能知道意思

发表评论

表情:
评论列表 (有 0 条评论,841人围观)

还没有评论,来说两句吧...

相关阅读

    相关 IDEA开发总结

    前言 IDEA是一个非常强大的工具,对于提高编程效率有非常大的帮助。当然他也不是全能的,有时候的一些需求他可能并没有办法直接满足,这个时候一般就需要通过他的插件来完成了。