gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 08:52:47 24 4
gpt4 key购买 nike

我是 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com