Обновить контроль над меткой в ​​SWT - PullRequest
0 голосов
/ 28 июня 2019

Я написал следующий код, который создает небольшую «таблицу» (на самом деле это не таблица, а две метки, слипшиеся).

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, поэтому я ищу идею, как ее решить.

...