2017-03-17 72 views
0

我想制作一个“自定义形状”,由于某种原因填充不显示哪个即时通讯假设它没有关闭。有人知道为什么路径不会关闭JavaFX

这里是我的代码:

Path path = new Path(); 

    path.getElements().add(new MoveTo(0, 0)); 
    path.getElements().add(new LineTo(5, 0)); 

    path.getElements().add(new MoveTo(5, 0)); 
    path.getElements().add(new LineTo(5, 4)); 

    path.getElements().add(new MoveTo(5, 4)); 
    path.getElements().add(new LineTo(15, 4)); 

    path.getElements().add(new MoveTo(15, 4)); 
    path.getElements().add(new LineTo(15, 0)); 

    path.getElements().add(new MoveTo(15, 0)); 
    path.getElements().add(new LineTo(18, 0)); 

    path.getElements().add(new MoveTo(18, 0)); 
    path.getElements().add(new LineTo(18, 4)); 

    path.getElements().add(new MoveTo(18, 4)); 
    path.getElements().add(new LineTo(20, 4)); 

    path.getElements().add(new MoveTo(20, 4)); 
    path.getElements().add(new LineTo(20, 6)); 

    path.getElements().add(new MoveTo(20, 6)); 
    path.getElements().add(new LineTo(0, 6)); 

    path.getElements().add(new MoveTo(0, 6)); 
    path.getElements().add(new LineTo(0, 0)); 

    path.setFill(Color.BLUE); 
    path.relocate(250, 250); 

    root.getChildren().add(path); 
    root.setScaleX(10); 
    root.setScaleY(10); 

    stage.setScene(scene); 
    stage.show(); 

很欣赏的帮助!

回答

0

您不需要在LineTo之后的MoveTo到相同的位置。此外,您应该使用ClosePath而不是添加LineTo来关闭路径:

path.getElements().addAll(new MoveTo(0, 0), 
          new LineTo(5, 0), 
          new LineTo(5, 4), 
          new LineTo(15, 4), 
          new LineTo(15, 0), 
          new LineTo(18, 0), 
          new LineTo(18, 4), 
          new LineTo(20, 4), 
          new LineTo(20, 6), 
          new LineTo(0, 6), 
          new ClosePath());