idea-插件开发 Dialogs
文章目录
- 前言
- 一、DialogWrapper
- 二、使用 DialogWrapper
- 简单小案例
- 1.1 定义dialog
- 1.2 使用dialog
- 默认 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
public class SampleDialogWrapper extends DialogWrapper {
public SampleDialogWrapper() {
super(true); // use current window as parent
init();
setTitle("Test DialogWrapper");
}
/** * 自定义提示组件 * * @return JComponent */
@Nullable
@Override
protected JComponent createCenterPanel() {
JPanel dialogPanel = new JPanel(new BorderLayout());
JLabel label = new JLabel("testing");
label.setPreferredSize(new Dimension(100, 100));
dialogPanel.add(label, BorderLayout.CENTER);
return dialogPanel;
}
}
1.2 使用dialog
if (new SampleDialogWrapper().showAndGet()) {
// user pressed OK
}
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.(提供几个默认的通知对话框(“确定|取消”)以及简单的输入对话框。)
下面是这个类一些简单的方法 — 看看方法名就大概知道啥功能
代码如下(示例):
类似文本域输入框
// 方法参数如下
public static @NlsSafe String showMultilineInputDialog(Project project,
@DialogMessage String message,
@DialogTitle String title,
@Nullable @NonNls String initialValue,
@Nullable Icon icon,
@Nullable InputValidator validator)
// 调用方法如下
// userInput
String strMysqlColumns = Messages.showMultilineInputDialog(project, "Enter the column you need to add salt",
"xyang", "example:\n" +
"\t user_id,\n " +
"\t user_name", Messages.getInformationIcon(), null);
实际效果
可能有小伙伴可能会疑惑,Project 这个参数…不明白的建议看看我前俩篇文章
- idea 自定义插件 工具面板
- IDEA-插件开发 入门篇
单行输入框
// 方法如下
public static @NlsSafe String showInputDialog(@Nullable Project project,
@DialogMessage String message,
@DialogTitle String title,
@Nullable Icon icon)
// 调用逻辑如下
String prefix = Messages.showInputDialog(project, "Enter the prefix you need to add",
"xyang", Messages.getInformationIcon());
实际效果如下
总结
还有很多各种各样的 dialogs,这里就不一一演示了,很多方法看方法名都大概能知道意思
还没有评论,来说两句吧...