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)---对话框的主要内容,如果未能解决你的问题,请参考以下文章