现在我正在使用Eclipse Luna,JavaFX和SceneBuilder。我有~40个按钮,我想使用每个按钮都可以使用的通用“buttonPressed”动作方法。像这样:
public void buttonPressed(ActionEvent event, Button b) {
b.setText("Pressed");
}
当我在SceneBuilder中更改On Action面板时,我尝试运行程序时出现以下异常:
javafx.fxml.LoadException:解析onAction ='#buttonPressed'时出错,要么事件处理程序不在命名空间中,要么脚本中有错误。
我错过了一步吗?或者有没有人知道使用一种方法控制多个按钮的点击行为的另一种方法?
任何帮助表示赞赏!
答案 0 :(得分:2)
与评论中一样,onAction
属性允许的唯一签名是零参数,或者是ActionEvent
的单个参数。
您可以按如下方式获取事件来源:
@FXML
public void buttonPressed(ActionEvent event) {
Object source = event.getSource();
// ...
}
当然,如果你知道你只在按钮上注册处理程序,你可以
@FXML
public void buttonPressed(ActionEvent event) {
Button button = (Button) event.getSource();
// ...
}