DialogWrapper
DialogWrapper
该
是基本类,它应该用于* IntelliJ Platform *插件中显示的所有模态对话框(以及一些非模态对话框)。
它提供以下功能:
*按钮布局(特定于平台的“确定/取消”按钮,特定于macOS的“帮助”按钮)
*上下文帮助
*记住对话框的大小
*非模态验证(当输入对话框的数据无效时显示错误消息文本)
- 键盘快捷键:
*Esc
用于关闭对话框
*“左/右”用于在按钮之间切换
*如果对话框中存在“是/否”动作,则为“Y/N”
*可选`不要再问’复选框
使用时
对于您自己的对话框,您需要按照以下步骤操作:
*调用基类构造函数,并在框架中提供将显示对话框的项目,或者提供对话框的父组件。
*从对话框类的构造函数中调用init()
方法
*调用setTitle()
方法设置对话框的标题
*实现createCenterPanel()
方法以返回包含对话框主要内容的组件。
-
可选:覆盖
getPreferredFocusedComponent()
方法并返回首次显示对话框时应该聚焦的组件。 -
可选:重写
getDimensionServiceKey()
方法以返回将用于持久化对话框维度的标识符。 -
可选:重写
getHelpId()
方法以返回与对话框关联的上下文帮助主题。
该
class通常与UI Designer表单一起使用。
在这种情况下,您将UI Designer表单绑定到您的类扩展
将窗体的顶级面板绑定到一个字段,并从createCenterPanel()
方法返回该字段。
要显示对话框,可以调用show()
方法,然后使用getExitCode()
方法检查对话框的关闭方式。
要自定义对话框中显示的按钮(替换标准的“OK/Cancel/Help”按钮组),您可以覆盖createActions()
或createLeftActions()
方法。
这两个方法都返回一个Swing Action对象数组。
如果您要添加的按钮关闭对话框,则可以使用
作为您行动的基类。
使用action.putValue(DialogWrapper.DEFAULT_ACTION,true)
来设置默认按钮。
要验证输入到对话框中的数据,可以覆盖doValidate()
方法。
该方法将由计时器自动调用。
如果当前输入的数据有效,则需要从实现中返回“null”。
否则,你需要返回一个
封装错误消息的类和与无效数据关联的可选组件。
如果指定一个组件,它旁边会显示一个错误图标,当用户尝试调用“OK”操作时它将被聚焦。
##示例
简单定义一个
public class SampleDialogWrapper extends DialogWrapper {
public SampleDialogWrapper() {
super(true); // use current window as parent
init();
setTitle("Test DialogWrapper");
}
@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;
}
}
用法
JButton testButton = new JButton();
testButton.addActionListener(actionEvent -> {
boolean result = new SampleDialogWrapper().showAndGet();
if(result) {
// user pressed ok
}
});