私のユーザーは、メインのアプリケーションワークスペースからデータを選択します。データは書き込み可能リストに保存されます。次に、ユーザーはダイアログを開いて、選択したデータをテーブルに表示します。ユーザーが初めてダイアログを開いたとき。すべてが順調で、計画どおりに機能します。しかし、彼らがダイアログを閉じてから再び開いたとき。次のエラーが発生します。
ダイアログを閉じて、さらにデータを選択することができます。次に、ダイアログをもう一度開いて、古いデータと新しいデータを確認します。
コードがエラーまで使用しているステップの順序。
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();
}
});
}
何かご意見は?