我正在寻找处理壳的一般做法。
主应用程序菜单 单击 执行以下序列
DialogHandler Class =(执行我的应用程序基 GUI 类)
@Override
public Object execute(final ExecutionEvent event) throws ExecutionException {
if (dlg == null){
try {
AbstractAIFApplication app = AIFDesktop.getActiveDesktop().getCurrentApplication();
session = (TCSession) app.getSession();
TCUserService userService = session.getUserService();
AplotVersion.negotiateVersion(userService);
AplotQueryCapabilities.initialize(userService);
shell = HandlerUtil.getActiveWorkbenchWindowChecked(event).getShell();
dlg = new AplotBaseDialog(shell, session);
}
catch (Exception ex) {
MessageBox.post(HandlerUtil.getActiveWorkbenchWindowChecked(event).getShell(), ex, true);
}
}
dlg.open();
return null;
}// end execute()
问题。由于我在 DialogHandler 中打开 Dialog,我是否必须在该类中处理它?
while(!shell.isDisposed()){
if(!display.readAndDispatch())
display.sleep();
}
display.dispose();
我的 GUI 基类 AplotBaseDialog =(扩展 TitleAreaDialog)
构造函数从 DialogHandler 类接收 Shell。
问题:我是否将 While(!shell.isDisposed()) 代码放在此类中?
我还从 AplotBaseDialog 类中的按钮打开了几个对话框。
private void showPDFCreateDialog() {
pdfDialog = new AplotCreatePDFDialog(this, getShell(), session);
pdfDialog.open();
pdfDialog.getShell().setSize(700, 400);
}
问题:我是否必须在每个对话框类中包含 dispose 代码,或者在关闭按钮代码中包含 dispose() 是否足够好?
问题:这是创建和打开对话框的正确方法吗?
问:现在,我没有在我的应用程序代码中的任何地方设置显示。
Display display = Display.getDefault();
我只是将一个 Shell 从父对话框传递给子对话框,并在需要时使用 asyncExec。
Display.getDefault().asyncExec(new Runnable() {
public void run() {
}
}
问题:我是否需要在我的应用程序代码中的某处使用 while(!shell.isDisposed()) ?