Javafx 无节点的网格窗格列/行坐标

Javafx 无节点的网格窗格列/行坐标,javafx,drag-and-drop,gridpane,Javafx,Drag And Drop,Gridpane,我试图根据网格窗格的列和行来找出鼠标的位置。我知道鼠标的位置,所以如果我知道每个单元格的宽度和高度(我看不出一个简单的方法来计算),我大概可以从中计算出来,但我看到的大多数代码似乎都假定鼠标位于GridPane内的一个节点上: Node node = (Node) event.getTarget(); int row = GridPane.getRowIndex(node); int column = GridPane.getColumnIndex

我试图根据网格窗格的列和行来找出鼠标的位置。我知道鼠标的位置,所以如果我知道每个单元格的宽度和高度(我看不出一个简单的方法来计算),我大概可以从中计算出来,但我看到的大多数代码似乎都假定鼠标位于GridPane内的一个节点上:

        Node node = (Node) event.getTarget();
        int row = GridPane.getRowIndex(node);
        int column = GridPane.getColumnIndex(node);
但实际上我的网格窗格中没有任何内容,所以我只获取整个网格窗格。现在,我想我可以为每个单元添加节点,但这似乎效率低下。(其想法是用户将节点放置在网格中,因此网格开始时是空的。)

编辑:为了澄清,我主要想做的是SceneBuilder在向下放置网格窗格,然后在其上拖动组件时所做的工作。您悬停在上面的单元格将高亮显示,然后(如果您放下组件),它将被添加到该单元格中。所以我知道这是可能的(作为一个概念也不奇怪)


有什么想法吗?

这并不能完全回答我的问题,但它在短期内对我很有用,对其他人也可能有用。只有当查询的维度上的单元格是一致的(即所有单元格的宽度/高度都相同)时,它才起作用


由于无法直接迭代行和列的当前状态,我认为完整的解决方案需要分析子项(如果有)以及行和列约束。

为什么,您希望实现什么?“网格”只是布局的一个心理图像,如果你想响应鼠标事件,你应该有一个发生这些事件的节点。如果需要,可以创建一个空白窗格。@kleopatra图像不仅仅是精神上的:想想我想做什么,比如SceneBuilder。实际上和SceneBuilder一模一样。当您将按钮拖动到网格单元上时,该单元将指示,按钮将进入该单元。这正是我的想法。为了进一步澄清:我不想创建N个空白节点,只是为了在它们上放置一些东西。也许有比GridPane更好的对象,但我想做的正是SceneBuilder所做的。
 public int getCoord(double width, double coord, int numberOfSections) {
        long dim = Math.round(width / numberOfSections);
        long border = dim;
        int val = 0;
        while(coord > border) {
            border += dim;
            val++;
        }
        return val;
    }