2014-10-08 111 views
0

我有這樣的代碼(簡體/ shortend /僞):JavaFX的BorderPane力重疊

StackPane background = new StackPane(); 
GridPane overlay = new GridPane(); 
BorderPane pane = new BorderPane(background); 
pane.setLeft(overlay); 

我想要的背景/堆棧窗格覆蓋整個窗口(在後臺,驚喜),和覆蓋/網格覆蓋背景的一部分。問題是,當我添加一個ImageView到StackPane時,圖像顯示出來,沒有別的。覆蓋圖不可見。我嘗試過overlay.toFront,overlay.preferredHeight和background.toBack,沒有成功。

回答

1

嘗試將邊框窗格放入堆棧窗格中,而不是其他方式,然後確保將圖像添加爲堆棧窗格的子項的第一個元素。

GridPane overlay = new GridPane(); 
BorderPane pane = new BorderPane(); 
pane.setLeft(overlay); 
StackPane background = new StackPane(pane); 

// ... 
ImageView imageView = ... ; 
background.getChildren().add(0, imageView); 

// ... 
scene.setRoot(background); 

另外,只需使用BorderPane作爲根,並以通常的方式添加節點。然後,在一個外部樣式表中,做

.root { 
    -fx-background-image: url(relative/path/to/image); 
} 
+0

沒有運氣,那要麼:/ – LilSweden 2014-10-08 19:38:01

+0

沒關係!有用。你認爲有什麼方法可以使它與邊界面板一起工作作爲主窗格嗎?這對我來說似乎更清潔,更合乎邏輯。否則,我會去這個。 – LilSweden 2014-10-08 19:44:58

+0

使用CSS在「BorderPane」上設置背景圖像。查看更新的答案。 – 2014-10-08 19:48:48