框。
对话框类型 |
创建方法 |
与Swing中那些方法功能相同 |
确认(消息、询问图标、确认和取消按钮) |
MessageDialog.openConfirm( Shell parent, String title, String message) ,用户点击"确认"就返回true,否则返回false。 |
JOptionPane.showConfirmDialog(...) passing the optionType JOptionPane.OK_CANCEL_OPTION |
错误(消息、错误图标和确认按钮) |
MessageDialog.openError( Shell parent, String title, String message) |
JOptionPane.showMessageDialog(...) passing the messageType JOptionPane.ERROR_MESSAGE |
提示(消息、提示图标和确认按钮) |
MessageDialog.openInformation( Shell parent, String title, String message) |
JOptionPane.showMessageDialog(...) passing the messageType JOptionPane.INFORMATION_MESSAGE |
询问是否(消息、询问图标、是和否按钮) |
MessageDialog.openQuestion( Shell parent, String title, String question) 用户点击"是"就返回true,否则返回false。 |
JOptionPane.showConfirmDialog(...) passing the optionType JOptionPane.YES_NO_OPTION |
警告(消息、警告图标、确认按钮) |
MessageDialog.openWarning( Shell parent, String title, String message) |
JOptionPane.showMessageDialog(...) passing the messageType JOptionPane.WARNING_MESSAGE |
有人可能认为使用标准对话框的时候,JOptionPane类比MessageDialog提供了更大的灵活性。但是归根结底,在MessageDialog的构造函数和自定义对话框的帮助下,你几乎可以实现所有的事务。MessageDialog中缺少而JOptionPane拥有的唯一的特性是在HTML中直接进行消息格式化。但是使用自定义对话框的时候是可以实现这种功能的。
对话框辅助类
现在我们知道了可供选择的类型了,让我们来建立Invokatron需要的对话框吧。有两个地方需要对话框:
· 代码生成过程的确认信息,是否覆盖前面的代码。
· 输入一个值的对话框(与JOptionPane.showInputDialog()类似)。
这个类中的第一个方法是用于确认代码覆盖的:
public static boolean openOverwriteDialog(Shell parent) {
return MessageDialog.openConfirm(parent,
"Confirmation",
"You are about to overwrite your class. " +
"Are you sure you want to continue?");
}
上面的代码非常简单,我们仅仅建立了一个常规的确认对话框。输入对话框有点麻烦:MessageDialog没有输入字段。我们只能建立一个新对话框类,可以是Dialog的子类。我们也可以建立MessageDialog的子类并重载它的createCustomArea()方法,添加输入字段。但是我们还有更简单的方法。
我们将使用InputDialog类:
public static String openInputDialog(
Shell parent,
String title,
String question,
String initialValue) {
InputDialog dlg = new InputDialog(
parent,
title,
question,
initialValue,
null); //这是一个可供选择的有效的类
dlg.open();
if(dlg.getReturnCode()!=Window.OK) //点击"确认"了吗?
return null;
return dlg.getValue();
}
我们的对话框辅助类完成了。你可以在图4中看到这些对话框。
|