生成N x N网格

在JavaFX应用程序中创建N x N网格最简单的方法是什么?

我正在寻找的唯一要求是网格的大小总是占用相同的空间量,因此更多的正方形=更小的正方形。 我可以设置方块的颜色,我可以单独hover在每个方块上,并能够为每个方块显示一些。

在程序运行之前我不会知道’N’并解析一些数据来计算我需要多少总方块,这是我计算可以使用的最小NxN网格时所需的。

据我所知,我的选择是:

  1. GridPane – 使用列约束和行约束生成大小并可能添加hover属性?
  2. TableView – 有许多选项可以让每个单元格数据在hover时显示,但仍然很难只添加行和列。
  3. 矩形 – 只需生成并绘制每个矩形,同时计算每个方块的x和y坐标。 这样可以很容易地进行颜色和hover,但我看不出resize是如何工作的,但我可以为我的应用程序设置特定的大小。 我还必须计算最佳尺寸,以使每个方格填满网格区域。

我不一定要找人来编写解决方案,但是如果有人处理了这个并且知道一个好的方法我想听听它。

不要偏离原来的想法。 当你给出的所有方法都可行时,你为什么要寻找“无痛”的方式? 这是使用矩形的一个。 GridMaker.SCREEN_SIZE指的是您必须拥有的屏幕大小。

public static Pane makeGrid(int n){ double width = GridMaker.SCREEN_SIZE/n; Pane p = new Pane(); Rectangle [][] rec = new Rectangle [n][n]; for(int i=0; i 

然后,如果要更改颜色,只需将鼠标侦听器添加到窗格即可。

  p.setOnMouseClicked(new EventHandler  (){ @Override public void handle(MouseEvent me){ double posX = me.getX(); double posY = me.getY(); int colX = (int)(posX / width); int colY = (int) (posY / width); rec[colX][colY].setFill(Color.RED); } }); 

- 编辑

1) 是的,它对我有用。

2)对于hover,你在寻找什么样的hover效果? 你可以在每个矩形上添加hover效果,如果你想让我告诉你如何,我绝对可以为你编码。