Мое программное обеспечение, 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
введите описание изображения здесь
Большое спасибо всем