• Liebe User, bitte beachtet folgendes Thema: Was im Forum passiert, bleibt im Forum! Danke!
  • Hallo Gemeinde! Das Problem leidet zurzeit unter technischen Problemen. Wir sind da dran, aber das Zeitkontingent ist begrenzt. In der Zwischenzeit dürfte den meisten aufgefallen sein, dass das Erstellen von Posts funktioniert, auch wenn das Forum erstmal eine Fehlermeldung wirft. Um unseren Löschaufwand zu minimieren, bitten wir euch darum, nicht mehrmals auf 'Post Reply' zu klicken, da das zur Mehrfachposts führt. Grußworte.

Java-Gosus: brauche Hilfe beim List-Control

Mitglied seit
04.08.2002
Beiträge
1.869
Reaktionen
0
Moin.

Ich schreibe gerade ein Eclipse-Plugin und verwende dort eine SWT List (org.eclipse.swt.widgets.List).

Nun hab ich folgendes Problem:

In der Methode

protected Control createContents(Composite parent)

erzeuge ich eine solche Liste und fülle diese mit Einträgen. Je mehr Einträge ich allerdings da rein packe, desto höher wird die Liste.

Auch wenn ich beim Erstellen das Flag SWT.V_SCROLL angebe, um vertikale Scroll-Balken zu bekommen, wird trotzdem die height des Controls immer größer, je mehr Elemente ich einfüge.

Als LayoutManager verwende ich ein GridLayout. Die LayoutData sieht wie folgt aus:

.setLayoutData(new GridData(SWT.FILL, SWT.TOP, false, false, 1, 1))

Ich hab jetzt schon ausführlich gesucht, aber ich finde keine Möglichkeit, wie ich dieses Scheiß-Control in der Höhe begrenzen kann (für ne JList gibt's da ja die wunderbare Funktion setVisibleRowCount).

Also dann, bin für jeden Vorschlag dankbar...
 
Mitglied seit
04.08.2002
Beiträge
1.869
Reaktionen
0
OK, hab's mit ein bisschen rumfummeln hinbekommen:


//set a maximum height for the list
int nListHeight = m_lstProjects.getItemHeight() * 3;
Rectangle trim = m_lstProjects.computeTrim(0, 0, 0, nListHeight);
GridData gridData = new GridData(GridData.HORIZONTAL_ALIGN_FILL | GridData.VERTICAL_ALIGN_FILL);
gridData.horizontalSpan = 2;
gridData.verticalSpan = 1;
gridData.heightHint = trim.height;
m_lstProjects.setLayoutData(gridData);


ist nicht sonderlich hübsch, funktioniert aber.

Vielleicht hat jemand noch nen besseren Vorschlag?
 
Oben