PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Java: Größe eines JSpinner über ChangeListener anpassen



Stollentroll
24.05.2006, 14:41
Hallo,
ich habe ein kleines Schönheitsproblem mit dem ChangeListener einer JSpinner Komponente. Folgende Situation:
Ich lese aus einer Datei Zeilenweise Text aus und speichere diesen in einer LinkedList. Diese LinkedList übergebe ich meinem SpinnerListModell.
Da die Zeilen in der Datei unterschiedlich lang sind, habe ich dem JSpinner Objekt einen ChangeListener spendiert:

spinner.addChangeListener(new ChangeListener(){
public void stateChanged(ChangeEvent e){
refreshSpinner();
}
});

In refreshSpinner() wird nur ein this.pack() ausgeführt (die Klasse erbt von JFrame)

Das ganze funktioniert auch, nur nicht so wie es soll. Eigentlich sollte beim Durchklicken durch den Inhalt des JSpinner der neue Inhalt angezeigt werden (worauf ich ja keinen Einfluss habe) und dann über den ChangeListener ausgelöst das Fenster neu gezeichnet werden, damit der Text auch komplett in die Spinner Komponente passt.

Was allerdings passiert: das Fenster wird zwar jedesmal neu gezeichnet, allerdings passt der Text danach (meistens) immer noch nicht in die Komponente.
Ich vermute, dass zuerst das this.pack() ausgeführt wird, mit dem noch alten Inhalt, dann erst der Inhalt geändert wird und dieser natürlich nicht in das Fenster passen muss.

Kennt ihr vielleicht eine Möglichkeit, die Reihenfolge dieses Vorgangs zu ändern (wenn die Reihenfolge denn Schuld an dem Problem hat) oder eine andere Möglichkeit den JSpinner an die Länge des String anzupassen?

Stollentroll