# Größe von JSpinner fixieren



## carolin (28. Okt 2010)

Hallo,

ich habe folgendes Problem:

Ich habe einen JSpinner mit einem SpinnerListModel, der die Monatsnahmen enthält. Ich würde gerne die Größe (d.h. die Breite) des JSpinners so festlegen, dass sie immer dem längsten Monatsnamen entspricht. Momentan habe ich nämlich das Problem, dass sich der JSpinner immer dem aktuellen Monatsnamen anpasst. Ich habe schon versucht das irgendwie auf ein FormattedTextfield runterzubrechen, aber das hat mir auch nicht das gewünschte Resultat gebracht, weil ich die Größe nur ungenau einstellen kann (über setColumns).

Hat jemand eine Idee?
Danke schonmal.

Gruß,
Carolin


----------



## Michael... (28. Okt 2010)

Die dargestellte Größe einer Komponente ist u.a. vom LayoutManager abhängig. Für eine konkrete Empfehlung müsste man wissen, wie Dein Layout aufgebaut ist.
Möglich wären:
einen anderen LayoutManager verwenden
und/oder die Größe der Komponente per
setPreferredSize(Dimension d)
oder
setSize(w, h);
oder
setBounds(x, y, w, h);
zu setzen.


----------



## carolin (28. Okt 2010)

Ich glaube, dass in diesem Fall mein Layout Manager nicht entscheidend ist, da dieses Problem sowohl beim GridBagLayout als auch beim FlowLayout auftritt.
Es geht mir ja auch nur darum dieses Textfeld anzupassen - dass, wenn ich "September" in meinem JSpinner anzeige, dieser die gleiche Größe wie bei der Anzeige von "Mai" hat. Ich würde dann gerne sagen "Textfeld sei bitte immer so groß wie die Länge des Wortes 'September'". Ohje - ist klar, was ich meine?


----------



## Michael... (28. Okt 2010)

Im Falle von GridBagLayout, kann man über die Constraints festlegen, dass die Komponente die zur Verfügung stehende Breite benutzt.


carolin hat gesagt.:


> Ich würde dann gerne sagen "Textfeld sei bitte immer so groß wie die Länge des Wortes 'September'". Ohje - ist klar, was ich meine?


Das ist mir schon klar, theoretisch könnte man die Komponente ja fragen, wie groß Sie beim Inhalt "September" denn gerne wäre bzw. könnte man das sicherlich auch berechnen. Die ermittelte Breite muss man dann als Größe setzen. Wie und ob das dann auch was nutzt, hängt dann aber letztendlich vom verwendeten LayoutManager ab.


----------



## carolin (29. Okt 2010)

Danke.
Ja, das klappt so einigermaßen. Ich hole mir die Größe, wenn ich "September" im JSpinner stehen habe und setze diese dann mit der setPreferredSize-Methode. Das Problem, das bleibt, ist: Ich habe diesen JSpinner auf einer Seite eines JSplitPane liegen, wenn ich meinen "Divider" bewege springt diese Größe des JSpinners auf die größe des aktuellen Monatsnamens. Ich würde entweder den JSpinner oder den Divider gerne irgendwie fixieren - hast du da eine Idee?

Gruß


----------

