• 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;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

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

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

  • 相关阅读:
    2022年12月1日最新的SqlServer安装教程
    计算机网络-网络互连和互联网(四)
    王者荣耀安卓区修改荣耀战区方法 | 最低战力查询(附带视频与安装包)
    BSP3 电力监控仪(功率监控仪)端子定义和接线
    CSAPP bomblab
    基于matlab和Simulink的不同阶QAM调制解调系统误码率对比仿真
    【云原生 | Kubernetes 实战】03、手把手教你基于YAML文件运行pod应用
    [Web安全 网络安全]-学习视频分享汇总(持续更新中)
    操作系统之内存的分配与回收——连续分配内存
    Scala第十章
  • 原文地址:https://blog.csdn.net/jiangguilong2000/article/details/126061958