0

Trying to extract Group wrapped node data seems really tricky. Any pointers getting data inside node objects (which by definition have no children) like in code below I would like to get Rectangle.userData inside Group(VBox(Rectangle))?

def west(): Unit = {
  def boxPart(ix: Int): VBox = new VBox {
    padding = Insets(2, 5, 8, 5)
    userData = "My userData VBox wrap"
    children = (
      new Rectangle {
        width = 250 
        height = 125 
        fill = Color.DeepSkyBlue
        userData = "My userData Rectangle wrap"+ix.toString
      }
    )
  } 

  val packet = new Group(boxPart(12345))

  val vboxproof = packet.children.get(0).userData

  println("TESTER:" + vboxproof)

  // getting rectangle userData ???
}

west

1 Answers1

1

Children of Group are generic Nodes. You need to access actual type of a child to access additional properties. Also keep in mind that you are navigating the JavaFX scene graph, so need to "cast" children to JavaFX types. You can create vboxproof using something like this to get children of VBox:

  val vboxproof = packet.children.get(0) match {
    case v : javafx.scene.layout.VBox => v.children.get(0).userData
    case v => "Unexpected type: " + v.getClass.getName
  }
Jarek
  • 1,513
  • 9
  • 16