# JList automatisch scrollen



## S2PID (16. Jun 2008)

Hallo, ich würde gerne meine JList automatisch ans Ende scrollen lassen.

Folgendes hab ich versucht:


```
exceptionList = new JList();
					jScrollPane1.setViewportView(exceptionList);
					exceptionList.setModel(exceptionListModel);
					exceptionList.setFont(new java.awt.Font("Courier New",0,11));
					exceptionList.addListSelectionListener(new ListSelectionListener() {
						public void valueChanged(ListSelectionEvent evt) {
							JScrollBar bar = jScrollPane1.getVerticalScrollBar();
							bar.setValue( bar.getMaximum() );
						}
					});
```

Wenn ich grad so drüber nachdenke ist das natürlich totaler Blödsinn was ich da gemacht habe. Die frage ist nur, welcher Listener ist der richtige? 

Grad noch einen getestet:

```
exceptionList.addContainerListener(new ContainerAdapter() {
						public void componentAdded(ContainerEvent evt) {
							JScrollBar bar = jScrollPane1.getVerticalScrollBar();
							bar.setValue( bar.getMaximum() );
						}
					});
```

der geht auch nich


----------



## anfänger15 (16. Jun 2008)

Ich versteh nicht so richtig für was du Listener verwendest. Wenn du einfach nur die Liste ans Ende scollen lassen möchtest benötigst du keinen Listener da dieser ja erst ausgeführt wird wenn man z.B. irgendwas anklickt wobei es nicht mehr automatisch ist.

zum die Liste ans Ende zu scrollen müsste es reichen, wenn du list.setSelectedIndex(list.getMaxSelectionIndex()) ausführst.

Ist nicht getestet.


----------



## S2PID (16. Jun 2008)

in der liste kommen unregelmäßig infos hinzu. Das ganze läuft ehr als Infofenster im hintergrund. Und nun ist es einfach so das die Liste brav mitscrollen soll wenn neue Daten reinkommen.

ich hab eben deinen vorschlag versucht indem ich das von dir da reingesetzt habe, wo die liste mit daten gefüttert wird. also das er immer gleich nach unten scrollt sobald sich an den daten was ändert. aber das geht auch nicht


----------



## anfänger15 (16. Jun 2008)

es müsste aber doch möglich sein, das du den gerade hinzugefügten text mit setSelectedIndex markierst und meines Wissens wird er dann auch in den sichtbaren bereich verschoben also ganz nach unten gescrollt wenn es der letzte eintrag ist


----------



## S2PID (16. Jun 2008)

nein tut er leider nicht, eben getestet. wenn ich mit setSelectedIndex immer den letzten EIntrag der dazukommt anwähle scrollt er NICHT mit


----------



## anfänger15 (17. Jun 2008)

```
bar.setValue( bar.getMaximum() );
```

Damit erreichst du auf jeden Fall mal das die Liste bis auf den 2 untersten Eintrag gescrollt wird. Wenn du das nach dem hinzufügen der Einträge ausführst müsste es zumindest so weit gehen wie du allerdings ganz runterscrollst kann ich dir im momment leider auch nciht sagen


----------



## S2PID (17. Jun 2008)

Ja das geht, ist allerdings nur eine suboptimale Lösung, da wenn man sich das unterste anschauen möchte immer noch händisch das fenster anklicken muss, und händisch scrollen muss.


----------



## Michael... (17. Jun 2008)

das kann man mittels Manipulation des Viewports erreichen:

```
JViewport viewPort = jScrollpane1.getViewport();
viewPort.setViewPosition(new Point(0, exceptionList.getHeight()));
jScrollpane1.setViewport(viewPort);
```


----------



## S2PID (17. Jun 2008)

prima, dankeschön  das funktioniert nun.

Danke.


----------

