# Automatisches Scrollen bei JScrollPane



## vegeta (2. Mai 2005)

Hallo,

hab ein kleines Problem und brauch eure hilfe.

Ich hab ein JScrollPane in dem ein JEditorpane liegt.
füge ich neuen text in das JEditorPane springt der JScrollbalken nach oben, also zum Anfang.
ich möchte aber kein scrollen. JScrollpane passt in dieser zischenzeit die Ansicht, also setzt die neue
größe und so weiter.
ich hab es geschaft zurück an die stelle zu scrollen wo ich war, problem ist, dass ich das mitbekomme wie die scrollpane nach oben scrollt und dann wieder 
zurück. 

Hat jmd einen Vorschlag?

vielleicht das repaint verhindern, aber ich weis nciht wie 

danke


----------



## vegeta (3. Mai 2005)

Hallo,

kann mir niemand helfen?

jeder hinweis wäre hilfreich

danke

gruss


----------



## L-ectron-X (3. Mai 2005)

Ich weiß nicht, habe mal die API-Doc ein wenig durchstöbert. Vielleicht kann das hier helfen. Hatte keine Zeit, mir das näher anzusehen.
http://java.sun.com/j2se/1.5.0/docs/api/javax/swing/JViewport.html#setScrollMode(int)


----------



## vegeta (4. Mai 2005)

hallo,

danke ich hab mir das angeschaut, leider komme ich damit nicht weiter habe es auch schon ausprobiert. Die einstellungen werden meines wissen dafür verwendet wenn die balken schmieren und nicht richtig arbeiten.

ok gruss Said


----------



## Snape (4. Mai 2005)

Was möchtest Du denn? Dass die TextArea immer an die unterste Stelle scrollt und nicht zum anfang zurück?


----------



## vegeta (4. Mai 2005)

Hallo,

nein ich will das nicht gescrollt wird wenn ein neuer text in das TextPane eingefügt wird. weil jetzt so wie sun das ganze implementiert hat, wird immer an die erste stelle gescrollt wenn etwas zu der Textpane hinzugenommen wird, weil während dieses vorgangs auch die neue größe festgelegt werden muss

gruss said


----------



## Snape (4. Mai 2005)

Noch einmal:
Soll ans Ende der ScrollPane gescrollt werden - das geschieht nicht automatisch - oder soll der angezeigte Bereich fest bleiben?
Angenommen ich befinde mich in den Zeilen 5-15 (sichtbarer Bereich) und füge 10 Zeilen dazu. Soll dann 15-25 sichtbar sein oder weiterhin 5-15?


----------



## vegeta (4. Mai 2005)

ok, noch in 5-15, also der angezeigte Bereich soll fest bleiben.


----------



## Tomtom (4. Mai 2005)

Folgende Methode ins Programm einbauen:


```
public void autoscroll() {
		Point point = new Point( 0, (int)(jTextArea.getSize().getHeight()) );
		jScrollPane1.getViewport().setViewPosition( point );
	}
```


Die ruftst du einfach auf, direkt nachdem du etwas in dein Textarea geschrieben hast. 
zB

```
jTextArea.append("> "+msg_savfilbef+"\n");
autoscroll();
```
[/quote]


----------



## Tomtom (4. Mai 2005)

....aber ich glaube ich habe deine Frage falsch verstanden. Die ist einfach für mich unverständlich geschrieben


----------



## vegeta (4. Mai 2005)

hi,

ich benutze ein JTextPane müßte jedoch das selbe sein, ausser vielleicht das ich das darunterliegende document  schreibe.
folgendes hab ich gemacht was vielleicht einen ählichen ansatzt hat wie von dir. das ganze funktioniert auch nur das immer wenn etwas neues rein kommt also in datachanged der scrollbalken nach oben scrollt und im anschluß holle ich den wieder an die ursprungliche position nur das ist unschön beim lesen wenn plötzlich der text weg ist


```
oldPosition = scrollPane.getViewport().getViewPosition();
dataChanged();
scrollPane.getViewport().setViewPosition(new Point (0,(int)oldPosition.getY()));
```


----------

