# In JScrollPane nach oben springen



## Gast (13. Mrz 2008)

Hallo,

bin zur Zeit am Verzweifeln.

Ich füge auf einer TabbedPane eine JScrollPane ein, die ein JPanel beinhaltet.
Das Panel ist realtiv lang und beim einfügen des Panel in die ScrollPane ist
immer nur das Ende des Panels zu sehen. Sinn ist natürlich, den Anfang des
Panels zu sehen. Daher wollte ich mit dem ViewPort.setViewPosition an
den Anfang springen, aber das interessiert ihn überhaupt nicht.

Seltsam finde ich, dass er auch beim getViewPosition eine 0, 0 ausgibt.


```
JScrollPane scrollPane = new JScrollPane(myPanel);
scrollPane.setPreferredSize(new Dimension(800,600));
JViewport jViewPort = scrollPane.getViewport();
			
Dimension dim = jViewPort.getViewSize();
System.out.println("Grösse X:" + dim.width + " Y:" + dim.height);
		    
Point point = jViewPort.getViewPosition();
System.out.println("Position X:" + point.x + " Y:" + point.y);

// bringt leider keinen Erfolg!			
jViewPort.setViewPosition(new Point(0,100));
point = jViewPort.getViewPosition();
System.out.println("Position X:" + point.x + " Y:" + point.y);

// Ausgabe
Grösse X:577 Y:1856
Position X:0 Y:0
Position X:0 Y:100
```

Wie bringe ich denn nun die Scrollbar dazu, nach oben zu springen?

Gruss
Frank


----------



## The_S (13. Mrz 2008)

Du gibst dir die Antwort schon selbst: Du musst die value von der ScrollBAR manipulieren.


----------



## Guest (13. Mrz 2008)

Gute Idee mit der Scrollbar..aber funktionieren tut es nicht wirklich.
Wenn ich den Wert auf z.B. 100 setze, passiert gar nichts und er spuckt
mir aber einen Wert von 90 (getValue()) aus?!


```
scrollPane = new JScrollPane(stationDataPanel);
scrollPane.setPreferredSize(new Dimension(800,600));
	
JScrollBar vert = scrollPane.getVerticalScrollBar();
System.out.println("Scroll ist bei " + vert.getValue());
			
vert.setValue(100);
System.out.println("Scroll ist bei " + vert.getValue());

// Ausgabe
Scroll ist bei 0
Scroll ist bei 90
```

Müsste der Ursprungswert der Scrollbar nicht bei einem Wert > 0 liegen?


----------



## The_S (13. Mrz 2008)

Wird denn die ScrollPane zu diesem Zeitpunkt überhaupt schon angezeigt???


----------



## Guest (13. Mrz 2008)

Hobbit_Im_Blutrausch hat gesagt.:
			
		

> Wird denn die ScrollPane zu diesem Zeitpunkt überhaupt schon angezeigt???



Die Einrichtung der ScrollPane geschieht im Konstruktor einer JFrame-Klasse.

Du meinst, den Wert der Scrollbar (vielleicht auch des ViewPorts?) kann ich erst nach
dem Anzeigen des Frames anpassen?


----------



## The_S (13. Mrz 2008)

wär nen Versuch wert


----------



## Guest (20. Mrz 2008)

Hallo,

ich habe da ein ähnliches Problem....
Ich habe in einer ScrollPane einen großen JPanel liegen in dem wiederum kleinere Panels mit Textfeldern und Buttons liegen. Die VerticalScrollbar läuft bei mir immer bis genau der letzte Text im Panel angezeigt wird. Ich möchte jedoch auch das die Scrollbar ganz am Anfang steht.

Versucht habe ich bist jetzt 
- setViewport ...
- setCaretPosition (vom ersten Textfeld)
leider funktioniert beides nicht.

Thx schon mal für die Hilfe.!!!


----------



## Sivar (18. Jul 2008)

Ich habe festgestellt, dass paintComponent(Graphics g) des JPanels, dass in meiner JScrollPane liegt, noch einige Male aufgerufen wird, obwohl mein eigenter Code schon erledigt ist. Die letze Zeile meines Codes lautet auch

```
bar.setValue(0);
```
Aber offensichtlich wird der Wert irgendwann überschrieben. Was mir folgende Zeilen gesagt haben

```
public void paintComponent(Graphics g) {
		super.paintComponent(g);
                JViewport vp=(JViewport)this.getParent();
                JScrollPane scrollinfo=(JScrollPane)vp.getParent();
                JScrollBar bar = scrollinfo.getVerticalScrollBar();
                System.out.println("Value:"+bar.getValue());		
	}
```

....aber das muss doch irgendwie gehen.... :?:


----------

