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

标签 java javafx

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

最佳答案

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

一个TilePane然而,确实保证其单元格大小相同。然后您可以使用 Group将 TilePane 与节点组合,例如 Circle 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();
    }
}

关于java - 如何在JavaFX上绘制网格并用点绘制网格角?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60676683/

相关文章:

按下相邻按钮后,JavaFX 按钮会增加一个像素

ios - Java FX Gluon移动版

java - java 6或7编译器是否改进了 str.startWith ("a") 并将其转换为 str.charAt(0) == 'a' 如果它包含一个字符的字符串?

java - 从请求体获取params,但不能在mybatis注解连接查询中使用

java - 如何将图像添加到 ListView

java - 从java应用程序(mysql,javafx)插入阿拉伯语数据时出现问题

colors - 选中时如何更改 JavaFX TableCell 颜色?

java - 我如何将参数传递给Maven中的注解处理器

java - 需要帮助调试我的 android-java 代码

java - 使用 Java 调用 AWS Lambda 上的 Web 服务