1. 程式人生 > >JavaFX學習筆記——用法技巧總結(二)

JavaFX學習筆記——用法技巧總結(二)

如何改變兄弟節點的覆蓋關係

問題

倘若編寫下列程式碼,實現把兩個相交的圓作為一對兄弟節點放入同一個父節點pane中,卻發現不能讓circle覆蓋circle2

                          Circle circle = new Circle(100,100,50);

                          circle.setFill(Color.RED);

                          Circle circle2 = new Circle(150,100,50);

                          circle2.setFill(Color.BLUE);

                          Pane pane = new Pane();

ObservableList<Node> list = pane.getChildren();

                          list.addAll(circle,circle2);

        倘若得到的結果會是

    在list中處於後面的circle2會覆蓋circle。

     由此瞭解JavaFx的Parent渲染機制——按其子節點下標順序依次渲染

解決方法

直接 改程式碼很簡單,交換兩者的add順序即可,不再贅述。問題是有時需要執行時交換順序,則需要利用node不能被共享的機制,在上述程式碼後加上如下程式碼

                         ObservableList<Node> tmpList = new Pane().getChildren();

                         tmpList.add(list.get(0));//這時list中處於下標0位置的circle就轉移到了tmpList中,然後0位置的變成了circle2

                        list.add(list.get(0));

   結果如下