没有节点的 GridPane 列/行坐标

问题描述

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

        Node node = (Node) event.getTarget();
        int row = GridPane.getRowIndex(node);
        int column = GridPane.getColumnIndex(node);

但实际上我的 GridPane 里面没有任何东西,所以我只得到了整个 GridPane。现在,我想我可以为每个单元格添加节点,但这似乎效率低下。 (这个想法是用户将节点放置在网格中,所以网格开始时是空的。)

编辑:澄清一下,当您将 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;
    }

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

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...