java - 如何获取大GridPane(15x15)中每个元素的列和行索引

标签 java javafx fxml gridpane

我想找到获取单元格中许多元素的列和行索引的最佳解决方案。

例如我有 GridPane(15x15)。每个单元格都有按钮组件。我想在指示 mouseClicked 事件时获取行和列的索引。我知道如何手动执行此操作:

@FXML Button btn1;

btn1.setOnMouseClicked(e->{
            System.out.println("Row: "+ GridPane.getRowIndex(btn1));
            System.out.println("Column: "+ GridPane.getColumnIndex(btn1));
        });

但是在我的问题中该怎么做:15x15 gridPane。声明每个按钮并为每个组件复制相同的代码是无效的。有人知道如何做到这一点吗?

//================================================ ===============

我决定准备一种方法并将其链接到所有按钮。这就是我一直在寻找的:)。

感谢您的回答

    @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));
            }
        });
    }

关于java - 如何获取大GridPane(15x15)中每个元素的列和行索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35986333/

相关文章:

java - OSGi 后台线程故障

java - 为 JDBC 使用正确配置的 CLASSPATH 变量是什么样子的?

java - 无法集成测试 gradle 多模块 Spring-Boot-Application

JavaFX MediaPlayer 不播放 M4A 文件

java - 通过 FXCollections 从 FXML 创建集合

java - 我可以将对象的实例存储在 javaFX 节点中吗?

java - 动态地向用户宣布功能或更改

java - 打开窗口/阶段JavaFX时调用代码

java - 无法在 JavaFX WebView 中登录 Google

javafx - 选择组合框项目时执行操作 FXML