2016-10-19 2 views

ответ

1

Если вы имеете в виду перемещение области прокрутки заданного количества пикселей, тогда получите размер изображения и подсчитайте, сколько вам нужно переместить с hvalue или vvalue.

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

Та же концепция для вертикального изменения.

3

Эти свойства не бесполезны, вам просто нужно знать, как их правильно использовать. (Есть никаких методов не позволяет задавать абсолютные значения напрямую.)

Если предположить, что ScrollBar видна, вы знаете, по следующему уравнению

topLeft/(contentSize - viewportSize) = scrollValue/scrollMax 

Это можно перефразировать

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

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

Где topLeftX и topLeftY - координаты x и y пикселя в верхнем левом углу окна просмотра. Используйте viewportBounds, чтобы определить размер окна просмотра.

+1

Вы могли бы также (я верю), набор (или связывать) ScrollPane в '' hmax' к contentWidth-viewportWidth' (и аналогично для 'vmax'), если вы хотите, чтобы значение находилось в пиксельных координатах. –

0

Используйте setHvalue и setVvalue, чтобы разместить свой scrollPane.

Значения могут быть рассчитаны по отношению к Nodes

Для например:

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

Я сомневаюсь, что это приведет к правильным результатам, поскольку вы не учитываете видимую область. Кроме того, похоже, что вы решили изменить некоторые имена переменных в коде. – fabian

+0

Да @fabian, я пропустил правильные имена переменных в фрагменте, спасибо, что указал. Кроме того, он отвечает на вопрос о прокрутке программно в расчетную позицию. – tbf