Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/375.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在JavaFX上绘制网格并使用点绘制网格角点?_Java_Javafx - Fatal编程技术网

如何在JavaFX上绘制网格并使用点绘制网格角点?

如何在JavaFX上绘制网格并使用点绘制网格角点?,java,javafx,Java,Javafx,我是JavaFx新手,我想知道如何绘制网格,在网格角上绘制点。我应该用栅格作为基础还是线图?使用网格并在其上绘制的最佳类是什么 我不会使用GridPane,因为它的子项不能保证大小相同,只能对齐它们的网格单元边缘 但是,A确实保证其单元格大小相同。然后,可以使用一些基本数学知识,将平铺平面与节点(如s)组合在一起,这些节点位于栅格单元之间的点上: public class Grid extends Application { private int rows = 10; priv

我是JavaFx新手,我想知道如何绘制网格,在网格角上绘制点。我应该用栅格作为基础还是线图?使用网格并在其上绘制的最佳类是什么

我不会使用GridPane,因为它的子项不能保证大小相同,只能对齐它们的网格单元边缘

但是,A确实保证其单元格大小相同。然后,可以使用一些基本数学知识,将平铺平面与节点(如s)组合在一起,这些节点位于栅格单元之间的点上:

public class Grid
extends Application {
    private int rows = 10;
    private int columns = 10;
    private int spacing = 8;

    @Override
    public void start(Stage stage) {
        TilePane pane = new TilePane(spacing, spacing);
        pane.setPrefColumns(columns);

        Group group = new Group(pane);

        for (int row = 1; row < rows; row++) {
            for (int col = 1; col < columns; col++) {
                Circle point = new Circle(2);
                point.setFill(Color.BLACK);
                // x = ((tilewidth + hgap) * col) - (hgap / 2)
                // y = ((tileheight + vgap) * row) - (vgap / 2)
                point.centerXProperty().bind(
                    pane.tileWidthProperty().add(pane.hgapProperty())
                        .multiply(col)
                        .subtract(pane.hgapProperty().divide(2)));
                point.centerYProperty().bind(
                    pane.tileHeightProperty().add(pane.vgapProperty())
                        .multiply(row)
                        .subtract(pane.vgapProperty().divide(2)));
                group.getChildren().add(point);
            }
        }

        // Example grid content
        for (int row = 0; row < rows; row++) {
            for (int col = 0; col < columns; col++) {
                Text text = new Text(String.valueOf(row * rows + col));
                pane.getChildren().add(text);
            }
        }

        stage.setScene(new Scene(group));
        stage.setTitle("Grid");
        stage.show();
    }
}
公共类网格
扩展应用程序{
私有int行=10;
私有int列=10;
专用整数间距=8;
@凌驾
公众假期开始(阶段){
TilePane窗格=新的TilePane(间距,间距);
窗格.setPrefColumns(列);
组=新组(窗格);
for(int row=1;row
取决于您需要什么<代码>画布可能是性能最好的,除非您需要调整大小。如果需要调整大小,最好扩展
窗格
并覆盖
布局子项
以更新
s和
s。作为子级放置。如果我想在单击时用线连接点,我应该使用什么类?Path,LineTo类?当然可以使用Path,但我认为常规单机版会更容易。我可以在TilePane中的点之间画一条线吗?或者我应该创建一个简单的窗格,其中有一个平铺,用于在点之间绘制?您需要将线或路径添加到组中,而不是直接添加到平铺中。TilePane类为每个孩子制作一个互动程序;你不希望你的线实际被布置成瓷砖。好的,谢谢你,但我不明白的是一个点怎么知道当点击时,什么时候画一条线到另一个点?我的意思是如何选择几个点并画出一条线?