2017-03-01 63 views
0

我有一箇中心窗格 - VBox的邊框窗格。 VBox包含一個GridPane和一個VBox窗格。JavaFX懸停窗格通過窗格

VBox(VBox內部的)最初設置爲不可見。

我想要做的是如果GridPane的一個元素,即grid [x] [y]被徘徊,以將VBox的狀態更改爲可見狀態。

這是我使用的代碼。暫時是Vbox

grid_map[19][19].hoverProperty().addListener((ObservableValue<? 
extends Boolean> observable, Boolean oldValue, Boolean show) -> { 
     if (show) { 
      temporary.setLayoutX(grid_map[19][19].getLayoutX()); // this is not really working 

      temporary.setVisible(true); 
     } else { 
       temporary.setVisible(false); 
     //  grid_map[19][19].get 
     } 

    }); 

它正在工作,但它在網格的底部顯示VBox。我想要做的是獲取懸停元素的座標並在該元素或其左側或右側顯示VBox。我怎麼能這樣做?

回答

1

告訴「外部」 Vbox不要放置臨時VBOX爲您提供:

temporary.setManaged(false); 

然後設置layoutXlayoutY你現在正在做應該工作。

您可能需要調整臨時VBOX,它看起來像這樣:

grid_map[19][19].hoverProperty().addListener((observable, oldValue, show) -> { 
    if (show) { 

     double x = grid_map[19][19].getLayoutX(); 
     double y = grid_map[19][19].getLayoutY(); 
     double w = temporary.prefWidth(-1); 
     double h = temporary.prefHeight(w); 
     temporary.resizeRelocate(x, y, w, h); 
     temporary.setVisible(true); 
    } else { 
      temporary.setVisible(false); 
    } 

}); 
+0

這正是我需要的! –