Java SWT-关于检索结果/检测中止用户输入的对话框最佳实践的问题
我想用SWT/JFace作为UI库构建一个数据库应用程序。自从我第一次使用Window Builder Eclipse插件时偶然发现JFace以来,我已经习惯于手工编写SWT代码,并想深入研究它的数据绑定功能。Java SWT-关于检索结果/检测中止用户输入的对话框最佳实践的问题,java,data-binding,swt,jface,Java,Data Binding,Swt,Jface,我想用SWT/JFace作为UI库构建一个数据库应用程序。自从我第一次使用Window Builder Eclipse插件时偶然发现JFace以来,我已经习惯于手工编写SWT代码,并想深入研究它的数据绑定功能。 目前我的工作集中在“添加记录”对话框上,我对最佳实践感兴趣。我将一个空的模型对象绑定到文本字段,一旦用户输入,模型对象属性就会更新。 此外,我更改了open()方法的方法签名,以便在对话框处理后返回模型对象。截断的: public class AddRecordDialog extend
目前我的工作集中在“添加记录”对话框上,我对最佳实践感兴趣。我将一个空的模型对象绑定到文本字段,一旦用户输入,模型对象属性就会更新。
此外,我更改了
open()
方法的方法签名,以便在对话框处理后返回模型对象。截断的:
public class AddRecordDialog extends Dialog {
private MyItem item = new MyItem();
...
public MyItem open() {
createContents();
shell.open();
shell.layout();
Display display = getParent().getDisplay();
while (!shell.isDisposed()) {
if (!display.readAndDispatch()) {
display.sleep();
}
}
return item;
}
}
但是,如果用户取消输入(通过单击“取消”按钮或关闭对话框),这种处理结果对象的方式只会为我提供带有空默认构造函数中默认属性的模型对象,而不带参数。这就提出了一个问题,即如何确定用户已采取的行动的最佳实践。我脑海中的一些解决方案:
- 是否应该引入额外的标志?像一个额外的
值,比如初始化的boolean
和改变cancel按钮的选择侦听器上的变量cancelClicked=false
- 是否应该像在
类中那样为按钮指定ID,并在类中引入一个打开对话框的消息框
-语句?必须引入额外的方法来返回最终有效的模型对象开关
- 是否有其他方法通知对话框调用者已取消输入
提前感谢您阅读这个相对冗长的问题;) 如果你真的想坚持MVC,我建议稍微改变一下模式:)
如果你真的想坚持MVC,我建议你稍微改变一下模式:)
class MyItemBuilder {
private bool isCanceled = false;
private MyItem item;
// includes getters/setters of MyItem, which delegate to item
public bool cancel() {
isCanceled = true;
}
public MyItem build() {
if (isCanceled)
return null;
else
return item;
}
}
public class AddRecordDialog extends Dialog {
private MyItemBuilder builder = new MyItemBuilder();
...
}