在JavaFx中绘制多边形

时间:2015-02-18 03:31:20

标签: canvas javafx polygon fxml

我是javafx的新手,所以请不要对我严厉:)

我尝试使用预定义的点集在画布上绘制多边形,但我似乎无法理解如何去做。 我四处寻找教程,但似乎没有帮助。

任何帮助都将受到高度赞赏

编辑:

FXML代码

<?import javafx.scene.canvas.*?>
<?import javafx.scene.control.*?>
<?import java.lang.*?>
<?import javafx.scene.layout.*?>
<?import javafx.scene.layout.AnchorPane?>


<AnchorPane prefHeight="500.0" prefWidth="600.0" xmlns:fx="http://javafx.com/fxml/1" xmlns="http://javafx.com/javafx/8">
   <children>
      <SplitPane dividerPositions="0.8995983935742972" layoutX="220.0" layoutY="99.0" orientation="VERTICAL" prefHeight="500.0" prefWidth="600.0" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0">
        <items>
          <AnchorPane minHeight="0.0" minWidth="0.0" prefHeight="100.0" prefWidth="160.0">
               <children>
                  <Canvas height="444.0" layoutX="6.0" width="588.0" />
               </children>
            </AnchorPane>
          <AnchorPane minHeight="0.0" minWidth="0.0" prefHeight="100.0" prefWidth="160.0" />
        </items>
      </SplitPane>
   </children>
</AnchorPane>

Javafx代码

 @FXML
private Canvas canvas;

GraphicsContext gc;

public void drawShape(List<Point> points){
gc = canvas.getGraphicsContext2D();
gc.strokeRect(30, 100, 40, 40);
}

当我运行它时会返回NullPointerException。

我的问题是我想绘制在FlashX文档中画布上定义的形状。

1 个答案:

答案 0 :(得分:0)

您尚未在fxml文件中的fx:id上设置Canvas。你需要

<Canvas fx:id="canvas" height="444.0" layoutX="6.0" width="588.0" />

fx:id属性的值必须与控制器中的变量名匹配。

您没有显示调用drawShape()方法的上下文;在FXMLLoader将fxml文件中定义的画布注入控制器之后,您需要确保调用它。您可以通过从drawShape()方法或从事件处理程序(但不是从构造函数)调用initialize()来执行此操作。