# JList dynamisch ändern & Autoscroll in einem JTextArea



## steff aka sId (29. Januar 2004)

Hi hab im Moment zwei Probleme.
1. Ich habe einen Client- Server Programm mit .io und .net geschrieben. Jetzt möchte ich das beim Connecten des Clients (dabei wird für jeden Client ein Thread erstellt) der Client + Socket in einen Vector geschrieben wird und dieser Vector dann in eine JList. Genau an diesem Punkt liegt das Problem ich bekomm es einfach nicht hin die JList dynamisch zu ändern. Ich hab schon raus gefunden das ich dann das ListModel von der JList ändern muss aber wie genau das funktioniert weiß ich nicht bzw. glaube ich das ich zwar das ListModel überschrieben habe. Aber ich weiß nicht wie ich jetzt meinen Vector der JList hinzufüge. Zu dem Vector würde ich noch gerne wissen ob der eine toString Methode braucht. Weil irgend was muss die JList ja auch anzeigen können.

2. Problem ist das ich in einem JTextArea ein ScrollPane hinzufgefügt habe und diese ScrollPane sollte automatisch nach unten scrollen wenn der Eintrag größer wird als das Fenster.

Greetz Steff


----------



## steff aka sId (2. Februar 2004)

hm war ich unverständlich? oder kann mir keiner helfen?


----------



## steff aka sId (7. Februar 2004)

Kann mir keiner helfen? Oder hat wenigstens jemand nen Link wo mir geholfen werden könnte?


----------



## henning-malaysia (20. April 2005)

Weiß nicht, ob Deine Frage noch aktuell ist. 

Jedenfalls: 

Dem ListModel kann man  per addItem(Object)  - oder war es addElement(Object), musst mal probieren - einfach ein weiteres Element hinzufügen.

Hoffe mal, das hilft weiter!

Gruß

henning-malaysia


----------



## Snape (20. April 2005)

steff aka sId hat gesagt.:
			
		

> 2. Problem ist das ich in einem JTextArea ein ScrollPane hinzufgefügt habe und diese ScrollPane sollte automatisch nach unten scrollen wenn der Eintrag größer wird als das Fenster.
> 
> Greetz Steff



Eigentlich einfach:

```
Point point = new Point( 0, (int)(textArea.getSize().getHeight()) );
scrollPane.getViewport().setViewPosition( point );
```

Deine Frage muss mir entgangen sein.


----------



## th0r (27. März 2007)

Keine Ahnung ob das noch aktuell ist oder jemanden interessiert!

Ich habe das mit der Autoscrollenden TextArea so gemacht, da das andere bei mir, warum auch immer total geflackert hat  



```
void autoScroll() {             
        jTextArea.setCaretPosition(jTextArea.getText().length());
    }
```

Die Methode wird dann immer aufgerufen, wenn ich eine neue Zeile in die TextArea hineinschreibe.

Viele Grüße

Th0r


----------



## Gorr (5. Oktober 2008)

Ich brauch dieses autoscrollen auch gerade und habe den code


```
Point point = new Point( 0, (int)(textArea.getSize().getHeight()) );
scrollPane.getViewport().setViewPosition( point )
```
;

verwendet, das funktioniert problemlos, bis ich einen text in der textarea markiere, dann geht scrollt es nicht mehr automatisch.


```
void autoScroll() {             
        jTextArea.setCaretPosition(jTextArea.getText().length());
    }
```

Der code hingegen funktioniert immer, is nur imo etwas umständlicher, da man das immer schreiben muss und den oberen code genau 1x.

Gibt es vllt ne möglichkeit, dass der obere code immer scrollt, auch nachdem man einen text in der textarea markiert hat?


----------



## d4rkY89 (9. Oktober 2008)

Ich hab das Problem auch öfters, dass ich während des "Programmbetriebs" Listen und andere Dinge nicht ändern konnte. Ich habe das schließlich so gelöst:

list.setVisible(false);
nun die Items der Liste ändern
list.setVisible(true);

ist keine elegante Lösung, da es zu kurzen Flackern kommt, aber es geht


----------

