我的用户从主应用程序工作区中选择数据。数据存储在可写列表中。然后用户继续打开对话框以在表格中显示所选数据。当我的用户第一次打开对话框时。一切都很好,一切都按计划进行。但是当他们关闭对话框然后重新打开它时。我收到以下错误。
他们可以关闭对话框并选择更多数据。然后再次打开对话框以查看旧数据和新数据。
代码使用到错误的步骤顺序。
protected Control createDialogArea(Composite parent) {
Composite composite = (Composite) super.createDialogArea(parent);
Label line = new Label(parent, SWT.SEPARATOR | SWT.HORIZONTAL);
line.setLayoutData(new GridData(SWT.FILL, SWT.END, true, true));
final GridLayout gridLayout = new GridLayout();
gridLayout.marginWidth = 15;
gridLayout.marginHeight = 10;
composite.setLayout(gridLayout);
GridData gridData = new GridData(SWT.FILL, SWT.FILL, true, true);
composite.setLayoutData(gridData);
createTopButtons(composite);
createTableViewer(composite);
createRemoveButtons(composite);
updateTableViewer();
return composite;
}
在错误中,我们可以看到它来自 updateTableViewer
public void updateTableViewer() {
setRemoveButtonVisibility();
setRemoveAllButtonVisibility();
setPlotButtonVisibility();
setPDFButtonVisibility();
}
在错误中,我们看到它来自 setRemoveButtonVisibility();
public void setRemoveButtonVisibility() {
if (AplotDataModel.getInstance().getSize() > 0) {
removeButton.setVisible(true);
}
else {
removeButton.setVisible(false);
}
}
这是它指向的行:
removeButton.setVisible(true);
if 条件是检查存储用户选择的数据的可写列表。如果列表为空,则不显示按钮,如果有数据,则显示按钮。
下面是关闭对话框按钮的代码:
protected void createButtonsForButtonBar(Composite parent) {
Button okButton = createButton(parent, OK, "Close Aplot", true);
okButton.addSelectionListener(new SelectionAdapter() {
public void widgetSelected(SelectionEvent e) {
viewer = null;
close();
}
});
}
有什么想法吗?