Я написал следующий код, который создает небольшую «таблицу» (на самом деле это не таблица, а две метки, слипшиеся).
private void createOptionsPrefs(final ExpandBar parent) {
final Composite optionsPrefsComposite = new Composite(parent, SWT.NONE);
optionsPrefsComposite.setLayout(new GridLayout(totalColumns, true));
/** Showing one of the non table labels that must not be deleted **/
final boolean dateEnabled = PM.getInstance().getStringPM(PT.DATE));
final String dateStatus = dateEnabled ? "Enabled" : "Disabled";
Label dateLabel, dateValueLabel;
dateLabel = new Label(optionsPrefsComposite, SWT.NONE);
dateLabel.setLayoutData(descLabelGridData);
dateLabel.setText(PT.DATE.getExplanationLabelText());
dateValueLabel = new Label(optionsPrefsComposite, SWT.NONE);
dateValueLabel.setLayoutData(valueLabelGridData);
dateValueLabel.setText(dateStatus);
valueOfVariableOrDependentWigets.put(dateStatus, dateValueLabel);
/** more code here - other labels **/
final GridData descLabelGridData = new GridData(SWT.FILL, SWT.FILL, true, true, horizontalSpanForClioCommandPrefs, 1);
final GridData valueLabelGridData = new GridData(SWT.FILL, SWT.FILL, true, true, totalColumns - horizontalSpanForClioCommandPrefs, 1);
final Label nameTitleLabel = new Label(optionsPrefsComposite, SWT.None);
nameTitleLabel.setText("Custom Name");
nameTitleLabel.setLayoutData(descLabelGridData);
final Label commandTitleLabel = new Label(optionsPrefsComposite, SWT.None);
commandTitleLabel.setText("Value");
commandTitleLabel.setLayoutData(valueLabelGridData);
for (final OptionsAll option : PM.getInstance().getOptionsList()) {
final Label nameLabel = new Label(optionsPrefsComposite, SWT.None);
nameLabel.setText(option.getName());
nameLabel.setLayoutData(descLabelGridData);
final Label commandLabel = new Label(optionsPrefsComposite, SWT.None);
commandLabel.setText(option.getValue());
commandLabel.setLayoutData(valueLabelGridData);
}
createExpandItem(optionsPrefsComposite, "Reporting Options", com.ui.Activator.getDefault().getImageRegistry().get(IImageKeys.LOGO.getPath()));
}
Эта таблица может быть обновлена в том же месте пользовательского интерфейса.Я имею в виду, что пользователь может чувствовать таблицу (в другой вкладке) и ему следует обновить эту «таблицу».Я хочу создать метод автоматического обновления, который удалит эту таблицу (а не составную) и добавит новую.Сначала я хоть напишу следующую функцию:
private void refreshOptions() {
bar.getItem(optionExpandItemIndex).getControl().dispose();
final Composite optionsComposite = generateOptionList(bar);
bar.getItem(optionExpandItemIndex).setControl(optionsComposite);
}
Но она будет распоряжаться из контроля, а не из таблицы.Можно ли сгенерировать новую таблицу, удалить старую и добавить новую?Может быть, добавить слушателя событий?Я совершенно новичок в SWT
, поэтому я ищу идею, как ее решить.