2016-07-14 82 views
-1

我使用javafx为我的程序创建GUI,并创建了自定义按钮ComponentButton。这扩展了javafx.scene.control.Button,到目前为止唯一真正的区别是该按钮有一个额外的成员变量。我希望我的按钮的所有实例都有一个动作侦听器附加到它们,侦听器将使用成员变量。因此,我希望能够在按钮的类定义中定义动作侦听器。到目前为止,我一直无法做到这一点,我可以为按钮的每个实例创建一个动作监听器,但是由于会有很多它们,我宁愿避免它。在自定义按钮类中定义动作侦听器

任何想法或替代方法非常感谢,在此先感谢。

编辑:回答了

我决定把视图(使用了该按钮位置)实施EventHandler<ActionEvent>。这意味着我可以再添加方法

@Override 
public void handle(final ActionEvent event) 
{ 
    //Do stuff 
} 

这就意味着,我可以打电话给button.setOnAction(this);为执行动作

+1

“我可以做一个动作侦听器的按钮的每个实例,但一样会有一个很多人我宁愿避免它“。你为什么要避免它?而“至今我一直无法完成这项工作”并不是一个问题。究竟出了什么问题? –

+0

当然'this.setOnAction(this);',not'button.setOnAction(this);'? –

+0

我在UI类中使用它,并根据需要创建按钮的循环 –

回答

0

我决定把视图(使用了该按钮位置)实施EventHandler<ActionEvent>。这意味着我可以再添加方法

@Override 
public void handle(final ActionEvent event) 
{ 
    //Do stuff 
} 

这就意味着,我可以打电话给button.setOnAction(this);为执行动作

+1

而不是实现'EventHandler '接口(同时删除'@ button.setOnAction(this :: handle);'和*覆盖“注释)。这是更好的原因是,如果您需要为其他听众做同样的事情,您现在可以:使用您的原始解决方案,您无法同时执行'EventHandler '和(例如)'EventHandler '。您也可以使用此方法将该方法重命名为任何您喜欢的方法。 –