2013-04-11 328 views
3

我有一個borderPane,其中有一個菜單頂部,一個網格左側和一箇中心圖像。我希望圖像與邊界中心具有相同的大小,因爲現在圖像覆蓋了我的網格。JavaFx圖像調整大小

我嘗試這樣做:

  imageView.fitWidthProperty().bind(box.widthProperty()); 

其中ImageView的是我的形象和框中的名稱是BorderPane object.Thank你。

回答

2

參見JavaFX的功能請求RT-21337 Add ImageViewPane and MediaViewPane controls其包含用於樣品ImageViewPane實現其將調整大小它包含提供給區域的區域中的一個ImageView代碼附件。要獲得所需的行爲,可能也需要在ImageViewPane上實現computeMinWidthcomputeMinHeight,以使它們返回零而不是圖像的最小大小。


現在的圖像會在我的網格

這是因爲圖像的最小尺寸是目前比你BorderPane中心的可用空間較大:

BorderPane在默認情況下不剪裁其內容,因此如果兒童的最小尺寸阻止它在其空間內適合,則兒童的邊界可能會超出其自身範圍。

一些潛在的替代品,以防止中心內容溢出邊界:

  1. 手動設置中心節點上的clip,以防止其溢出邊界。
  2. 動態調整ImageView的大小,如上面鏈接的ImageViewPane樣本。
  3. ImageView置於ScrollPane中。
  4. 使用css -fx-background-image attributes來顯示和動態調整圖像的大小,而不是使用ImageView
  5. 在設置邊框內容之前先設置邊框窗格的中心,這樣它就會在邊框內容下面呈現。
  6. 使用與節點大於可用顯示區域時不重疊節點的邊框窗格(例如HBoxes,VBoxes等)中的不同構造。

我嘗試這樣做:imageView.fitWidthProperty().bind(box.widthProperty());

從提供的代碼我的猜測是,這並沒有工作,因爲圖像的包圍盒是某種形式的動態調整大小的窗格,所以盒子的最小寬度由圖像的寬度決定,反之亦然。