Java 我有一个圆形对象数组,如果单击,我需要填充一个圆形。如何为此编写事件处理? //使圆圈可点击 圈出[i].setOnMouseClicked(新建EventHandler(){ @凌驾 公共无效句柄(MouseEvent e){ 圆圈[i].setFill(颜色.蓝色); } });
是否有任何方法可以在不获取“在封闭范围内定义的局部变量i必须是最终的或有效的最终”错误的情况下更改i处的元素?复制变量i就足够了:Java 我有一个圆形对象数组,如果单击,我需要填充一个圆形。如何为此编写事件处理? //使圆圈可点击 圈出[i].setOnMouseClicked(新建EventHandler(){ @凌驾 公共无效句柄(MouseEvent e){ 圆圈[i].setFill(颜色.蓝色); } });,java,javafx,Java,Javafx,是否有任何方法可以在不获取“在封闭范围内定义的局部变量i必须是最终的或有效的最终”错误的情况下更改i处的元素?复制变量i就足够了: //使圆圈可点击 最终int copyOfI=i; 圈出[i].setOnMouseClicked(新建EventHandler(){ @凌驾 公共无效句柄(MouseEvent e){ 圈出[copyOfI].setFill(Color.BLUE); } }); 但是,由于阵列可以稍后更改,我将复制圆: 最终圆c=圆[i]; c、 setOnMouseCli
//使圆圈可点击
最终int copyOfI=i;
圈出[i].setOnMouseClicked(新建EventHandler(){
@凌驾
公共无效句柄(MouseEvent e){
圈出[copyOfI].setFill(Color.BLUE);
}
});
但是,由于阵列可以稍后更改,我将复制圆:
最终圆c=圆[i];
c、 setOnMouseClicked(新建EventHandler(){
@凌驾
公共无效句柄(MouseEvent e){
c、 设置填充(颜色:蓝色);
}
});
如果查看,您将看到它有一个继承自的字段:
事件最初发生在其上的对象
因此,您可以像这样直接使用它:
//making the circles clickable
circle[i].setOnMouseClicked(new EventHandler<MouseEvent>() {
@Override
public void handle(MouseEvent e) {
circle[i].setFill(Color.BLUE);
}
});
circle[i].setOnMouseClicked(新建EventHandler(){
@凌驾
公共无效句柄(MouseEvent e){
((按钮)e.source).setFill(颜色.蓝色);
}
});
有一点建议:setOnMouseClicked()
是一个非常低级的事件。Java提供了其他更高级别的事件,如ActionListener
。使用它非常相似。您可以将其与circle[i].setActionListener()
一起使用,并重写actionPerformed()
方法。我建议你多读一些关于不同听众的资料,这样你就知道在某个特定的事件中应该选择哪一个
注意:所有链接都是针对Java7文档的。请务必检查您正在使用的Java版本的文档。@Code peedient,我不确定这里的
按钮是否正确。您还链接了一个awt
JavaDoc。
circle[i].setOnMouseClicked(new EventHandler<MouseEvent>() {
@Override
public void handle(MouseEvent e) {
((Button)e.source).setFill(Color.BLUE);
}
});