2017-02-10 3 views
-1

У меня есть GridPane, которая заполняется прямоугольниками. То, что я хочу сделать, - отобразить новую панель, зависая над определенным прямоугольником (членом панели сетки). Ниже приведен пример с этим примером кода VBox ниже. Как я могу отображать его при наведении?JavaFX hover свойство

Rectangle r = new Rectangle(RECTANGLE_SIZE, RECTANGLE_SIZE); 
      r.hoverProperty().addListener((observable) -> { 
       r.setFill(Color.BLACK); 
       VBox box = new VBox(); 
       Button x = new Button("Test"); 
       box.getChildren().add(x); 
      }); 

набор заполнения правильно

ответ

1

работает в вашем примере вам необходимо указать Node, который будет родителем VBox. На данный момент вы всегда создаете новый VBox, но никогда не добавляете его в текущий график сцены. Попробуйте следующее:

r.hoverProperty().addListener((ObservableValue<? extends Boolean> observable, Boolean oldValue, Boolean show) -> { 
     if (show) { 
      VBox box = new VBox(); 
      Button x = new Button("Test"); 
      box.getChildren().add(x); 
      parent.getChildren().add(box); 
     } else { 
      parent.getChildren().clear(); 
     } 
}); 
+0

Каким будет родительский узел? Если я добавлю его в сцену GridPane, он очистит все объекты прямоугольника –

+0

Я бы попытался добавить вашу 'GridPane' в' StackPane', а затем добавить еще одну пустую 'Pane' в StackPane. В этом случае вы получите слой выше 'GridPane', в который вы можете добавить' VBox'. – MBec

 Смежные вопросы

  • Нет связанных вопросов^_^