JavaFX:按行和列获取节点
Posted
技术标签:
【中文标题】JavaFX:按行和列获取节点【英文标题】:JavaFX: Get Node by row and column 【发布时间】:2014-01-16 12:51:16 【问题描述】:如果我知道它的位置(行和列),是否有任何方法可以从 gridPane 获取特定节点,或者有任何其他方法可以从 gridPane 获取节点?
【问题讨论】:
重复***.com/q/20655024/3110608 【参考方案1】:我没有看到任何直接的 API 来逐行列索引,但您可以使用来自 Pane
的 getChildren
API,以及来自 GridPane
的 getRowIndex(Node child)
和 getColumnIndex(Node child)
//Gets the list of children of this Parent.
public ObservableList<Node> getChildren()
//Returns the child's column index constraint if set
public static java.lang.Integer getColumnIndex(Node child)
//Returns the child's row index constraint if set.
public static java.lang.Integer getRowIndex(Node child)
这是使用来自GridPane
的行和列索引获取Node
的示例代码
public Node getNodeByRowColumnIndex (final int row, final int column, GridPane gridPane)
Node result = null;
ObservableList<Node> childrens = gridPane.getChildren();
for (Node node : childrens)
if(gridPane.getRowIndex(node) == row && gridPane.getColumnIndex(node) == column)
result = node;
break;
return result;
重要更新:getRowIndex()
和 getColumnIndex()
现在是静态方法,应更改为 GridPane.getRowIndex(node)
和 GridPane.getColumnIndex(node)
。
【讨论】:
有什么理由使用java.lang.Integer
而不是标准?
请注意,也允许为索引指定null
;在这种情况下,索引被视为0
。在您的情况下,这会导致 NPE。
我认为getRowIndex()
和getColumnIndex()
方法只有在节点上设置了这样的约束时才会返回一个值,即不能保证它们会返回列或行索引。跨度>
@F*** 抱歉,我的意思是 getRowIndex。我有一个 getRowIndex(node) 返回 null 但我期望为 0 的场景。如果我将同一个节点放在任何其他行中,该方法将返回 1,2,3...
确保您的约束已设置。 Scenebuilder 喜欢将 0 视为未设置并将该字段设为空。所以在fxml文件中手动设置约束。例如 【参考方案2】:
@invariant 的上述回答是完全正确的,但对于一些这样做的人来说,可能存在性能问题,尤其是对于包含许多元素的 GridPanes。 在使用循环时(遍历 GridPane 的所有元素)。
我建议您初始化网格窗格中包含的所有元素/节点的静态数组。然后使用这个数组来获取你需要的节点。
即
1.有一个二维数组:
private Node[][] gridPaneArray = null;
2。在视图初始化期间调用这样的方法:
private void initializeGridPaneArray()
this.gridPaneArray = new Node[/*nbLines*/][/*nbColumns*/];
for(Node node : this.mainPane.getChildren())
this.gridPaneArray[GridPane.getRowIndex(node)][GridPane.getColumnIndex(node)] = node;
3.获取您的节点
Node n = this.gridPaneArray[x][y]; // and cast it to any type you want/need
【讨论】:
以上是关于JavaFX:按行和列获取节点的主要内容,如果未能解决你的问题,请参考以下文章