如何在JavaFX上绘制网格并使用点绘制网格角点?
我是JavaFx新手,我想知道如何绘制网格,在网格角上绘制点。我应该用栅格作为基础还是线图?使用网格并在其上绘制的最佳类是什么 我不会使用GridPane,因为它的子项不能保证大小相同,只能对齐它们的网格单元边缘 但是,A确实保证其单元格大小相同。然后,可以使用一些基本数学知识,将平铺平面与节点(如s)组合在一起,这些节点位于栅格单元之间的点上:如何在JavaFX上绘制网格并使用点绘制网格角点?,java,javafx,Java,Javafx,我是JavaFx新手,我想知道如何绘制网格,在网格角上绘制点。我应该用栅格作为基础还是线图?使用网格并在其上绘制的最佳类是什么 我不会使用GridPane,因为它的子项不能保证大小相同,只能对齐它们的网格单元边缘 但是,A确实保证其单元格大小相同。然后,可以使用一些基本数学知识,将平铺平面与节点(如s)组合在一起,这些节点位于栅格单元之间的点上: public class Grid extends Application { private int rows = 10; priv
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类为每个孩子制作一个互动程序;你不希望你的线实际被布置成瓷砖。好的,谢谢你,但我不明白的是一个点怎么知道当点击时,什么时候画一条线到另一个点?我的意思是如何选择几个点并画出一条线?