2016-04-24 11 views
2

Es tut mir leid, ich kann keinen Weg finden. Ich muss ein "Node" -Objekt zu einem "Line" -Objekt machen. Was ich meine, ist dies:
Ich habe eine AnchorPane gefüllt mit ziemlich viele Knoten, einige von ihnen Etiketten und die Mehrheit von ihnen Linien. Das Einrichten funktioniert gut und gut, aber später in meinem Code brauche ich die Koordinaten dieser Linien. Was ich versucht war (Erklärung unten):javafx - wie man einen Knoten in ein anderes Objekt konvertiert

List<Line> lineList = new ArrayList<>(); 
    for (Node currentNode : anchorPaneGame.getChildren()){ 
     if (currentNode.getTypeSelector().equals("Line")){ 
      lineList.add(currentNode); 
     } 

Ich habe eine Liste, wo ich wollte alle Linien sammeln, aber nicht, weil nicht funktioniert (ich werde einfach mein IDE zitiere): „add (javafx.scene.shape.Line) in List kann nicht auf (java.fx.scene.Node) angewendet werden ".
Befor, dass ich versuchte

Line tempLine = apGame.getChildren().get(apGame.getChildren().size()-1); 

Und bekam den gleichen Fehler natürlich zu tun (ich weiß für eine Tatsache, dass das letzte Element eine Linie ist, es als das letzte, was das Hinzufügen hart codiert). Der Grund, warum ich das alles tue, ist .getEndX() am Ende zu tun - das erste, was ich war versucht

 AnchorPane.setLeftAnchor(borderPane, apGame.getChildren().get(apGame.getChildren().size()-1).getEndX()); 

Dies war das den Borderpane direkt am Ende der letzten Zeile setzen soll, die gefunden werden konnten im AnchorPane apGame. Aber weil .getChildren nur Knoten zurückgibt, wusste es nicht, dass es sich um eine Linie handelte und konnte daher .getEndX() nicht auflösen.
Haben Sie irgendwelche Ideen, wie ich dem Programm klar machen kann, dass ein bestimmter Knoten tatsächlich eine Linie ist?

Antwort

5

Verwendung instanceof in Verbindung mit einem niedergeschlagenen:

List<Line> lineList = new ArrayList<>(); 
for (Node currentNode : anchorPaneGame.getChildren()){ 
    if (currentNode instanceof Line){ 
     lineList.add((Line)currentNode); 
    } 
} 
+0

Danke, das war _exactly_, was ich gesucht habe! Ich wusste, dass es eine einfache, kluge und knifflige Art geben musste, das zu tun – harlekintiger