2014-10-01 5 views
2

То, что я хочу сделать:
У меня есть JavaFX ScrollPane и мне нужно определить область, видимую в ScrollPane. Я знаю о ScrollPane.getViewPortBounds(), что позволяет мне получить размер видимой области, но не позицию.JavaFX: Получить видимую область ScrollPane

Есть ли способ, которым я могу это сделать?


В контексте:
Я отображая очень большое изображение, которое нужно будет отображаться только в участках одновременно. Весь файл ScrollPane используется для прокрутки изображения, но для определения того, какие части изображения мне нужно загрузить, мне нужно знать видимую область, отображаемую в ScrollPane.

ответ

0

ScrollPane также предоставляет видимую область. Этот код работает для работы:

Bounds bounds = scrollPane.getViewportBounds(); 
    int lowestXPixelShown = -1 * (int)bounds.getMinX() + 1; 
    int highestXPixelShown = -1 * (int)bounds.getMinX() + (int)bounds.getMaxX(); 
+0

Хм .. Я играл с этим немного, и он работает, но отражает только изменения, сделанные путем изменения размера окна. Прокрутка полос прокрутки не обновляет 'viewportBounds', что теперь кажется причиной моей путаницы. Я сделаю отдельный вопрос для не обновляющихся 'viewportBounds'. – sorbet

+0

Прокручиваете свою полосу прокрутки с помощью setHvalue() или вручную? Может быть, это не имеет значения, потому что getViewportBounds() обновляет для меня в любом случае. После прокрутки ваше приложение вызывает getViewportBounds()? Это нужно. Извините, если это глупое предложение! –

+0

Я прокручиваю, перетаскивая полосу прокрутки мышью. Я принял ваше предложение и немного экспериментировал. В моем тестовом приложении [(нажмите здесь)] (http://pastie.org/private/zsjaojwtytphephoxp3rg), только вызывая 'getViewportBounds()', нажав кнопку 'Button', но по какой-то причине не из' ChangeListener' , который я ранее использовал. Маршрут 'Button' для меня не является жизнеспособным вариантом, но мне нужна автоматизация, поэтому мне нужно заставить работать« ChangeListener ». – sorbet

Смежные вопросы