Hallo,
ich bin relativ unerfahren in der Programmierung mit Swing und versuche zur Zeit, einen Dialog zu erstellen, in dem ich eine ExpandBar zur Darstellung einzelner Composites und Elemente nutze. Leider kommt es dabei immer wieder zu Problemen in der Größendarstellung.
Ich habe mal ein Bild hochgeladen, dass das Problem zeigt.
Im eingeklappten Zustand ist alles ok.
Wenn ich ein ExpandItem ausklappe gibt es zwei Möglichkeiten.
Definition der Höhe über
Das führt dazu, dass man nichts von dem Item sehen kann.
Das führt dazu, dass Scrollbalken eingeblendet werden.
Im Idealfall hätte ich es gerne, dass sich beim Aufklappen das einzelne Item so weit vergrößert wie notwendig und der rest des Dialogs nach unten verschoben wird. Eingeklappt soll es so bleiben, wie es ist.
Ich finde aber den Fehler nicht.
Hier mal ein Codeausschnitt. Falls ich weitere Infos liefern soll/ kann einfach sagen. Ich möcht ja nicht das Forum mit meinem Code zuspammen
Kann mir vielleicht jemand einen Denkanstoss geben? Wie kann ich das lösen? Wie muss ein Listener dafür aussehen.
Als Layout für den Dialog benutz ich eine Art vertikales FillLayout namens ColumnLayout.
ich bin relativ unerfahren in der Programmierung mit Swing und versuche zur Zeit, einen Dialog zu erstellen, in dem ich eine ExpandBar zur Darstellung einzelner Composites und Elemente nutze. Leider kommt es dabei immer wieder zu Problemen in der Größendarstellung.
Ich habe mal ein Bild hochgeladen, dass das Problem zeigt.
Im eingeklappten Zustand ist alles ok.
Wenn ich ein ExpandItem ausklappe gibt es zwei Möglichkeiten.
Definition der Höhe über
Code:
itemTaskInfo.setHeight(comp.computeSize(SWT.DEFAULT, SWT.DEFAULT).y);
Das führt dazu, dass man nichts von dem Item sehen kann.
Code:
itemTaskInfo.setHeight(200);
Das führt dazu, dass Scrollbalken eingeblendet werden.
Im Idealfall hätte ich es gerne, dass sich beim Aufklappen das einzelne Item so weit vergrößert wie notwendig und der rest des Dialogs nach unten verschoben wird. Eingeklappt soll es so bleiben, wie es ist.
Ich finde aber den Fehler nicht.
Hier mal ein Codeausschnitt. Falls ich weitere Infos liefern soll/ kann einfach sagen. Ich möcht ja nicht das Forum mit meinem Code zuspammen
Code:
private void buildGUI()
{
labelLogo = new Label(specGUI, SWT.BORDER);
labelLogo.setImage(ImageConstants.PROTOTYPE_WISELOGO);
labelLogo.setAlignment(SWT.RIGHT);
labelLogo.setBackground(display.getSystemColor(SWT.COLOR_WHITE));
ExpandBar bar = new ExpandBar (specGUI, SWT.V_SCROLL);
bar.setBackground(display.getSystemColor(SWT.COLOR_WIDGET_BACKGROUND));
bar.setForeground(display.getSystemColor(SWT.COLOR_RED));
compTaskInfo = new Composite (bar, SWT.NONE);
compTaskInfo.setLayout(new GridLayout (2, true));
compObjectInfo = new Composite (bar, SWT.NONE);
compObjectInfo.setLayout(new GridLayout (2, true));
compObjectEdit = new Composite (specGUI, SWT.BORDER);
compObjectEdit.setLayout(new GridLayout (1, false));
compButtons = new Composite(specGUI, SWT.NONE);
compButtons.setLayout(new FillLayout());
buildTaskInfo(bar,compTaskInfo);
buildObjectInfo(bar,compObjectInfo);
buildObjectDefinition(compObjectEdit);
buildButtons(compButtons);
specGUI.pack();
specGUI.open();
}
private void buildTaskInfo(ExpandBar bar, Composite comp)
{
ExpandItem itemTaskInfo = new ExpandItem (bar, SWT.NONE, 0);
itemTaskInfo.setText(GUIConstants.SPEC_TASKINFO);
itemTaskInfo.setExpanded(true);
itemTaskInfo.setHeight(200);
itemTaskInfo.setControl(comp);
itemTaskInfo.setImage(ImageConstants.ICON_INFORMATION);
labelName = new Label(comp, SWT.NONE);
labelName.setText(GUIConstants.SPEC_TASKNAME);
textName = new Text(comp, SWT.NONE);
textName.setText("Aufgabenname");
labelDescription = new Label(comp, SWT.NONE);
labelDescription.setText(GUIConstants.SPEC_DESCRIPTION);
textDescription = new Text(comp, SWT.NONE);
textDescription.setText("Aufgabenbeschreibung");
labelRoles = new Label(comp, SWT.NONE);
labelRoles.setText(GUIConstants.SPEC_ROLES);
textRoles = new Text(comp, SWT.NONE);
textRoles.setText("Zugewiesene Rollen");
}
Kann mir vielleicht jemand einen Denkanstoss geben? Wie kann ich das lösen? Wie muss ein Listener dafür aussehen.
Als Layout für den Dialog benutz ich eine Art vertikales FillLayout namens ColumnLayout.