У меня есть окно приложения, в котором я хочу показать разные компоненты в зависимости от нескольких обстоятельств.
package graphicalInterface;
import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.layout.RowLayout;
public class parentWindow {
protected Shell shell;
public void open() {
Display display = Display.getDefault();
createContents();
shell.open();
shell.layout();
while (!shell.isDisposed()) {
if (!display.readAndDispatch()) {
display.sleep();
}
}
}
protected void createContents()
{
shell = new Shell();
shell.setSize(600, 400);
shell.setText("Test");
shell.setLayout(new RowLayout(SWT.HORIZONTAL));
menu myMenu = new menu(shell, SWT.NONE);
menu myMenu2 = new menu(shell, SWT.NONE);
menu myMenu3 = new menu(shell, SWT.NONE);
}
}
Композит читает
package graphicalInterface;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.SWT;
public class menu extends Composite {
public menu(Composite parent, int style) {
super(parent, SWT.NONE);
Button btnAzLicht = new Button(this, SWT.NONE);
btnAzLicht.setBounds(10, 10, 150, 35);
btnAzLicht.setText("AZ Licht");
}
@Override
protected void checkSubclass() {}
}
У меня также есть несколько других композитов, и я люблю загружать их по мере необходимости. Проблема в том, что я не знаю, как их разгрузить. Здесь я загрузил три меню, которые добавляются в верхнем левом углу окна. Если я просто перерисовываю окно (не загружая композиты во второй раз), они продолжают отображаться, удаление их не удалось. Я могу сделать их невидимыми, но если я загружу другую, то ее позиция не будет позицией невидимой, она будет добавлена на следующем свободном месте. Установка границ также не помогла, и я не нашел способа установить их в указанные координаты окна, и всегда устанавливал только одну из них видимой.