Автоматическая адаптация Composite, добавленная во время выполнения в SashForm - PullRequest
0 голосов
/ 03 июня 2019

Мое программное обеспечение, Java, использует базовую систему плагинов, каждый плагин позволяет вам расширять метод, который вставляет объекты времени выполнения в Composite, называя «content» в коде и с помощью BorderLayout, в SashForm, чтобы позволить пользователю управлять настройками плагина.

В результате в окне настроек новые элементы автоматически не адаптируются к окну, остающемуся с размером 0 и, следовательно, невидимым.

Единственный способ, которым мне удалось сделать их видимыми, используя setBounds ()

Это реализация метода, с помощью которого плагины создают свои элементы управления в окне настроек

class TestPref extends PreferenceNode{
        public TestPref(){
            System.out.println("Creating plugin preferences");
            setTitle("Test plugin");
        }

        @Override
        public void popolatePreferenzeComposite(Composite _composite, Properties _workbenchProp, Properties _userProp) {
            Label lblPrometeoTestPlugin = new Label(_composite, SWT.NONE);
            //lblPrometeoTestPlugin.setBounds(10, 10, 430, 15);
            lblPrometeoTestPlugin.setText("Prometeo Test Plugin v.1.0.0");

        }
    }

Это метод окна настроек, который заполняет содержимое, когда пользователь нажимает на элемент меню дерева.

// Prometeo->Plugins
        String itemPrometeoPlugins=ApplicationLauncher.texts.getString("com.gega.prometeo.workbanch.preferences.tree.prometeo.plugins");
        tree.addListener(SWT.Selection, new Listener() {
            public void handleEvent(Event event) {
                if(tree.getSelection()[0].getText().equals(itemPrometeoPlugins)) {
                    clearContent();

                    Table table = new Table(content, SWT.BORDER | SWT.FULL_SELECTION);
                    table.setLayoutData(BorderLayout.CENTER);
                    table.setHeaderVisible(true);
                    table.setLinesVisible(true);

                    TableColumn tblclmnNome = new TableColumn(table, SWT.NONE);
                    tblclmnNome.setWidth(100);
                    tblclmnNome.setText("Nome");

                    TableColumn tblclmnVersione = new TableColumn(table, SWT.NONE);
                    tblclmnVersione.setWidth(100);
                    tblclmnVersione.setText("Versione");

                    TableColumn tblclmnStatus = new TableColumn(table, SWT.NONE);
                    tblclmnStatus.setWidth(100);
                    tblclmnStatus.setText("Status");

                }       
            }
        });
public void clearContent() {
        for (Control control : content.getChildren()) {
            control.dispose();
        }
    }

без setBounds введите описание изображения здесь с setBounds введите описание изображения здесь

Большое спасибо всем

1 Ответ

0 голосов
/ 03 июня 2019

Мне удалось найти решение, используя setBounds () следующим образом

table.setBounds (0,0, content.getBounds (). Width, content.getBounds (). Height)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...