JavaFX Hover Pane over Pane

时间:2017-03-01 17:36:29

标签: java layout javafx hover

我正在使用带有中心窗格的边框窗格--VBox。 VBox包含一个GridPane和一个VBox窗格。

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 个答案:

答案 0 :(得分:2)

告诉“外部”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);
    }

});