Java 事件处理程序对事件源执行操作

Java 事件处理程序对事件源执行操作,java,javafx,javafx-8,Java,Javafx,Javafx 8,所以我试图从一个数组中得到一个按钮网格 Button[][] btn=new Button[10][10]; 我有代码显示它们正常工作。现在我尝试添加一个事件侦听器,如果用户单击按钮,它会将其文本更改为clicked。我查看了其他问题和Oracle文档,我使用getSource在单击按钮时获取按钮的源代码,因此它给出了如下内容Button@280448f1[styleClass=按钮]'1,5'。是否有一种有效的方法来使用此按钮并按此特定按钮操作?我这样做是对的还是我应该做些别的事情?这是

所以我试图从一个数组中得到一个按钮网格

Button[][] btn=new Button[10][10];  
我有代码显示它们正常工作。现在我尝试添加一个事件侦听器,如果用户单击按钮,它会将其文本更改为clicked。我查看了其他问题和Oracle文档,我使用getSource在单击按钮时获取按钮的源代码,因此它给出了如下内容Button@280448f1[styleClass=按钮]'1,5'。是否有一种有效的方法来使用此按钮并按此特定按钮操作?我这样做是对的还是我应该做些别的事情?这是我代码的一部分。现在在第一个事件处理程序中有一个错误,IDE说它不是一个语句

for(int i=0;i<btn.length;i++){
        for(int j=0;j<btn[i].length;j++){
            btn[i][j] = new Button(); //Create new button
            btn[i][j].setMinSize(60,60); //Set size
            btn[i][j].setText(i+", "+j); //Set coordinates as text
            btn[i][j].setBackground(background); //Set image
            GridPane.setColumnIndex(btn[i][j],i); //Set x
            GridPane.setRowIndex(btn[i][j],j); //Set y
            root.getChildren().addAll(btn[i][j]); //Add to gridpane

            btn[i][j].setOnAction(new EventHandler<ActionEvent>() {
                //Click Handler
            @Override
            public void handle(ActionEvent event) {
                (Button)(event.getSource()).setText("Cliked");
            }
            });


            btn[i][j].setOnMouseEntered(new EventHandler<MouseEvent>() {
                //Mouse enter area Handler
            @Override
               public void handle(MouseEvent t) {
               System.out.println(t.getSource());
               }
            });

        }


    }

您错误地将事件源类型强制转换为按钮。现在,您正试图强制转换setText方法的结果

只需更换这一行:

(Button)(event.getSource()).setText("Cliked");
为此:

((Button) event.getSource()).setText("Cliked");