2014-10-01 44 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 2014-10-07 03:46:03

+0

你用setHvalue()或手動滾動你的滾動條嗎?也許這並不重要,因爲無論哪種方式getViewportBounds()都會更新。 您的應用在滾動後再次調用getViewportBounds()嗎?它需要。對不起,如果這是一個愚蠢的建議! – 2014-10-07 18:31:24

+0

我通過用鼠標拖動滾動條來滾動。我採納了你的建議並進行了一些嘗試。在我的測試應用程序[(點擊此處)](http://pastie.org/private/zsjaojwtytphephoxp3rg)中,只需通過單擊「Button」來調用'getViewportBounds()',但由於某種原因,並非來自'ChangeListener' ,這是我以前使用的。然而'Button'路由對我來說不是一個可行的選擇 - 我需要自動化,所以我必須讓'ChangeListener'工作。 – sorbet 2014-10-07 22:19:53