所以我试图从数组中得到一个按钮网格
Button[][] btn=new Button[10][10];
我有显示它们正常工作的代码。现在我正在尝试添加一个事件侦听器,如果用户单击一个按钮,它会将其文本更改为“已点击”。我查看了其他问题和Oracle文档,并且在单击时使用getSource()来获取按钮的来源,因此它给出了类似于Button@280448f1[styleClass=button]'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());
}
});
}
}
您错误地将事件源类型转换为Button
。现在您正在尝试转换setText
方法的结果
只需替换这一行:
(Button)(event.getSource()).setText("Cliked");
对这个:
((Button) event.getSource()).setText("Cliked");