[英]JavaFX Hover Pane over Pane
我有一個帶有中心窗格的邊框窗格-VBox。 VBox包含一個GridPane和一個VBox窗格。
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。 我該怎么辦?
告訴“外部” Vbox
不要為您放置臨時vbox:
temporary.setManaged(false);
然后layoutX
layoutY
一樣設置layoutX
和layoutY
應該可以。
您可能需要調整臨時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);
}
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.