开发者社区> 问答> 正文

如何在JavaFX上绘制网格并在网格角上绘制一个点?

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

问题来源:Stack Overflow

展开
收起
montos 2020-03-26 18:55:14 695 0
1 条回答
写回答
取消 提交回答
  • 我不会使用GridPane,因为不能保证其子级具有相同的大小,而只能保证其网格单元格边缘对齐。

    一个TilePane,但是,不保证其细胞的大小相同。然后,您可以使用一些基本的数学运算符,使用Group将TilePane与节点(例如Circle)组合在一起,这些节点以网格单元之间的点为中心:

    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();
        }
    }
    

    回答来源:Stack Overflow

    2020-03-26 18:56:28
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载