swt layouting problem

Status
Nicht offen für weitere Antworten.

raiha

Mitglied
Hi,

habe ein kleines SWT-Verständnis-Problem.

Ich habe eine composite mit einspaltigem gridlayout. In das stecke ich ein Textfeld und ein Datetimefeld.
Auf die Shell rufe ich ein pack().

Nun sehe ich das composite das fenster ist so breit wie das Datetimefeld. Das Textfeld hat aber nicht die gleiche Länge (es ist nur so lang wie ich den Text mit .setText gesetzt hatte)?
Warum sind die nicht gleich lang/breit? Wie schaffe ich es das alle Elemente in meinem GridLayout gleich breit sind?

In Delphi kannte ich dies als alClient.

Danke und Gruß
Rainer
 
Das liegt glaub ich daran, dass Textfelder ihre Size beim Erstellen wirklich aus ihrem Inhalt kriegen. Wenn du ein leeres Textfeld erstellt,ist das 0 (sieht scheisse aus ist aber leider so), und sonst die Länge des Textes, den du festlegst.

Du musst die Size des Textfeldes selber per Hand setzen:

Code:
textfield.setPreferredSize( datetimefield.getSize()):

oder so, ich weiss grad nich genau ob getSize eine Dimension zurückliefert oder was auch immer.
 
Code:
textfield.setPreferredSize( datetimefield.getSize());
gibt es leider nicht und
Code:
.setSize(...)
bringt auch nicht den gewünschten Effekt :-(.

Muss man hier nicht eher beim Layout des composites ansetzen?

Danke und Gruß
Rainer
 
so geht's:

Code:
Text textField = new Text(composite, SWT.BORDER | SWT.SINGLE);
GridData gd = new GridData(GridData.FILL_HORIZONTAL);

textField.setLayoutData(gd);

Danke und Gruß
Rainer
 
Code:
textfield.setPreferredSize(new Dimension(datetimefield.getWidth(), datetimefield.getHeight()));

müsste gehen
 
Code:
textfield.setPreferredSize(new Dimension(datetimefield.getWidth(), datetimefield.getHeight()));

bei einer SWT Textfeld?

Bist du Dir da sicher? Das hat keine PreferredSize.

Gruß Rainer
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Zurück
Oben