2016-10-19 2 views

Antwort

1

Wenn Sie meinen, dass Sie den Bildlaufbereich um eine bestimmte Anzahl von Pixeln verschieben müssen, dann ermitteln Sie die Bildgröße und berechnen Sie, wie viel Sie mit hvalue oder vvalue verschieben müssen.

int pixelsH = 45; int change = pixelsH/scrollpane.getWidth(); scrollpane.setHvalue(scrollpane.getHValue() + change);

gleiche Konzept für die vertikale Veränderung.

3

Diese Eigenschaften sind nicht nutzlos, Sie müssen nur wissen, wie man sie richtig verwendet. (Es gibt keine Methoden so dass Sie direkt absolute Werte angeben.)

Vorausgesetzt, dass die ScrollBar sichtbar ist, wissen Sie, die folgende Gleichung

topLeft/(contentSize - viewportSize) = scrollValue/scrollMax 

Dies kann als

scrollValue = (topLeft * scrollMax)/(contentSize - viewportSize) 
      = topLeft/(contentSize - viewportSize) 

hvalue = topLeftX/(contentWidth - viewportWidth) 
vvalue = topLeftY/(contentHeight - viewportHeight) 
umformuliert werden

Wo topLeftX und topLeftY sind die x- und y-Koordinaten des Pixels in der oberen linken Ecke des Ansichtsfensters. Verwenden Sie die viewportBounds, um die Größe des Ansichtsfensters zu bestimmen.

+1

Sie könnten auch (glaube ich) Satz (oder binden), um das 'des scrollpane hmax' zu' content-viewportWidth' (und ähnlich für "vmax"), wenn Sie möchten, dass der Wert in Pixelkoordinaten liegt. –

0

Verwenden Sie setHvalue und setVvalue, um Ihren scrollPane zu positionieren.

Werte können in Bezug auf Nodes

Für zB berechnet werden:

double nodeX = dummyNode.getBoundsInParent().getMaxX(); double nodeY = dummyNode.getBoundsInParent().getMaxY(); double scrollPaneWidth = dummyScrollPane.getContent().getBoundsInLocal().getWidth() double scrollPaneHeight = dummyScrollPane.getContent().getBoundsInLocal().getHeight() dummyScrollPane.setVvalue(nodeY/height); dummyScrollPane.setHvalue(nodeX/width);

+1

Ich bezweifle, dass dies zu korrekten Ergebnissen führen würde, da Sie den sichtbaren Bereich nicht berücksichtigen. Außerdem scheint es, als hätten Sie beschlossen, einige der Variablennamen irgendwo im Code zu ändern. – fabian

+0

Ja @fabian, ich verpasste die richtigen Variablennamen im Snippet, danke für das Zeigen. Außerdem beantwortet dies die Frage des programmierten Scrollens zu einer berechneten Position. – tbf

Verwandte Themen