내 사용자가 주 응용 프로그램 작업 영역에서 데이터를 선택합니다. 데이터는 쓰기 가능 목록에 저장됩니다. 그런 다음 사용자는 대화 상자를 열어 선택한 데이터를 테이블에 표시합니다. 내 사용자가 처음으로 대화 상자를 열 때. 모든 것이 잘되고 일들이 계획대로 작동합니다. 그러나 대화 상자를 닫은 다음 다시 열 때. 다음과 같은 오류가 발생합니다.org.eclipse.swt.SWTExecption : 위젯이 삭제되었습니다.
그들은 대화 상자를 닫고 더 많은 데이터를 선택 사용할 수 있습니다. 대화 상자를 다시 열면 이전 데이터와 새 데이터를 볼 수 있습니다.
코드가 오류까지 사용하고있는 순서입니다.
오류에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에서 오는 것을 볼; 조건은 사용자가 선택한 데이터를 저장하는 기록 가능한 목록을 검사하는 경우
removeButton.setVisible(true);
:
public void setRemoveButtonVisibility() {
if (AplotDataModel.getInstance().getSize() > 0) {
removeButton.setVisible(true);
}
else {
removeButton.setVisible(false);
}
}
이
그것이 가리키는 라인이다. 목록이 비어있는 경우 버튼이 표시되지 않으며 데이터가있는 경우 버튼이 표시됩니다.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();
}
});
}
어떤 생각 : 여기
대화 버튼의 폐쇄에 대한 코드?