如何获取大 GridPane(15x15) 中每个元素的列和行索引
How to get column and row Index of each element in big GridPane(15x15)
我想找到获取单元格中许多元素的列和行索引的最佳解决方案。
例如我有 GridPane(15x15)。每个单元格都有 Button 组件。当指示 mouseClicked 事件时,我想获取行和列的索引。我知道如何手动执行此操作:
@FXML Button btn1;
btn1.setOnMouseClicked(e->{
System.out.println("Row: "+ GridPane.getRowIndex(btn1));
System.out.println("Column: "+ GridPane.getColumnIndex(btn1));
});
但是在我的问题中该怎么做:15x15 gridPane。声明每个按钮并为每个组件复制相同的代码是无效的。有人知道如何做到这一点?
//=========================================== =================
我决定准备一种方法,link它适用于所有按钮。这正是我要找的:)。
感谢回答
@FXML
private void testClicked(MouseEvent e){
Node src = (Node)e.getSource();
System.out.println("Row: "+ GridPane.getRowIndex(src));
System.out.println("Column: "+ GridPane.getColumnIndex(src));
}
您可以遍历 GridPane
的所有元素并在其中添加事件处理程序。
for (Node element : gridpane.getChildren()) {
element.addEventHandler(MouseEvent.MOUSE_CLICKED, new EventHandler<MouseEvent>() {
@Override
public void handle(MouseEvent event) {
System.out.println("Row: " + GridPane.getRowIndex(element));
System.out.println("Column: " + GridPane.getColumnIndex(element));
}
});
}
我想找到获取单元格中许多元素的列和行索引的最佳解决方案。
例如我有 GridPane(15x15)。每个单元格都有 Button 组件。当指示 mouseClicked 事件时,我想获取行和列的索引。我知道如何手动执行此操作:
@FXML Button btn1;
btn1.setOnMouseClicked(e->{
System.out.println("Row: "+ GridPane.getRowIndex(btn1));
System.out.println("Column: "+ GridPane.getColumnIndex(btn1));
});
但是在我的问题中该怎么做:15x15 gridPane。声明每个按钮并为每个组件复制相同的代码是无效的。有人知道如何做到这一点?
//=========================================== =================
我决定准备一种方法,link它适用于所有按钮。这正是我要找的:)。
感谢回答
@FXML
private void testClicked(MouseEvent e){
Node src = (Node)e.getSource();
System.out.println("Row: "+ GridPane.getRowIndex(src));
System.out.println("Column: "+ GridPane.getColumnIndex(src));
}
您可以遍历 GridPane
的所有元素并在其中添加事件处理程序。
for (Node element : gridpane.getChildren()) {
element.addEventHandler(MouseEvent.MOUSE_CLICKED, new EventHandler<MouseEvent>() {
@Override
public void handle(MouseEvent event) {
System.out.println("Row: " + GridPane.getRowIndex(element));
System.out.println("Column: " + GridPane.getColumnIndex(element));
}
});
}