IDEA插件开发(16)---对话框

Posted 流子

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了IDEA插件开发(16)---对话框相关的知识,希望对你有一定的参考价值。

对话包装器
这DialogWrapper是应该用于 IntelliJ 平台中显示的所有模式对话框(和一些非模式对话框)的基类。

它提供以下功能:

按钮布局(确定/取消按钮的平台特定顺序,macOS 特定的帮助按钮)

上下文帮助

记住对话框的大小

非模态验证(当输入到对话框中的数据无效时显示错误消息文本)

键盘快捷键:

Esc用于关闭对话框

Left/Right用于在按钮之间切换

Y/N表示是/没有动作,如果它们存在于对话框中

可选的不再询问复选框

用法
将DialogWrapper类用于对话框时,请执行以下必需步骤:

调用基类构造函数并Project在将显示对话框的框架中提供 a 或对话框的父组件。

调用setTitle()方法设置对话框的标题

init()从对话框类的构造函数中调用方法

实现该createCenterPanel()方法以返回包含对话框主要内容的组件。

可选:

覆盖该getPreferredFocusedComponent()方法并返回第一次显示对话框时应聚焦的组件。

覆盖该getDimensionServiceKey()方法以返回将用于保持对话框尺寸的标识符。

覆盖该getHelpId()方法以返回与对话框关联的上下文帮助主题(请参阅上下文帮助)。

该类DialogWrapper经常与GUI Designer 表单一起使用。在这种情况下,将 GUI Designer 表单绑定到扩展类DialogWrapper,将表单的顶级面板绑定到字段并从createCenterPanel()方法返回该字段。使用 Kotlin 时,使用Kotlin UI DSL提供对话框的内容。

有关在对话框中安排 UI 控件的建议,请参阅IntelliJ 平台 UI 指南中的布局主题。

可以在运行时使用UI Inspector检查现有对话框,例如,定位 UI 组件的底层实现。

要显示对话框,请调用该show()方法,然后使用该getExitCode()方法检查对话框是如何关闭的(请参阅 参考资料DialogWrapper#OK_EXIT_CODE|CANCEL_EXIT_CODE|CLOSE_EXIT_CODE)。该showAndGet()方法可用于组合这两个调用。

要自定义对话框中显示的按钮(替换标准的确定/取消/帮助按钮集),请覆盖createActions()或createLeftActions()方法。这两个方法都返回一个 Swing Action 对象数组。如果按钮关闭对话框,DialogWrapperExitAction则用作操作的基类。用于action.putValue(DialogWrapper.DEFAULT_ACTION, true)设置默认按钮。

输入验证
另请参阅IntelliJ 平台 UI 指南中的验证错误主题。

要验证输入到对话框中的数据,请覆盖该doValidate()方法。该方法将由计时器自动调用。如果当前输入的数据有效,则返回null。否则,返回一个ValidationInfo封装了错误消息的对象,以及一个与无效数据关联的可选组件。当指定一个组件时,它旁边会显示一个错误图标,当用户尝试调用OK操作时它会成为焦点。

例子
a 的简单定义DialogWrapper:

public class SampleDialogWrapper extends DialogWrapper

public SampleDialogWrapper() 
    super(true); // use current window as parent
    setTitle("Test DialogWrapper");
    init();


@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;


SampleDialogWrapper当用户单击按钮时显示对话框:

JButton testButton = new JButton();
testButton.addActionListener(actionEvent ->
if (new SampleDialogWrapper().showAndGet())
// user pressed OK

);

以上是关于IDEA插件开发(16)---对话框的主要内容,如果未能解决你的问题,请参考以下文章

IDEA插件开发(23)--Miscellaneous Swing Components

IDEA搭建scala开发环境开发spark应用程序

IDEA插件开发(19)--文件和类选择器

强烈推荐 16 款 IDEA 插件,让你的开发速度飞起来!

强烈推荐 16 款 IDEA 插件,让你的开发速度飞起来!

IDEA插件开发(20)--Editor Components