从JavaFX中的ActionEvent获取id

从JavaFX中的ActionEvent获取id,javafx,objectid,Javafx,Objectid,我有一组togglebutton,需要找出它们的id。目前我可以在getSource()和toString()方法中检查id,如下所示: @FXML public void btnCell(ActionEvent actionEvent) { System.out.println(actionEvent.getSource()); } 打印:ToggleButton[id=btn00,styleClass=ToggleButton]“” 我是否可以在不依赖该字符串上的某些可疑子字符串的

我有一组
togglebutton
,需要找出它们的id。目前我可以在
getSource()
toString()
方法中检查id,如下所示:

@FXML
public void btnCell(ActionEvent actionEvent) {
    System.out.println(actionEvent.getSource());
}
打印:
ToggleButton[id=btn00,styleClass=ToggleButton]“”


我是否可以在不依赖该字符串上的某些可疑子字符串的情况下提取id?

如果这仍然相关,我将使用大量通过编程生成的按钮(表示POS应用程序中的菜单项),通过MyButton.setUserData(MyProdID)标识,这些按钮是从数据库表中的产品id加载的。然后,您可以使用ActionEvent处理程序中的MyButton.getUserData()来获取这些信息。

希望它有帮助:

import javafx.scene.Node;
.... 
@FXML
public void btnCell(ActionEvent actionEvent) {
   final Node source = (Node) actionEvent.getSource();
   String id = source.getId();
   Scene scene = source.getScene();
   scene.lookup("#"+id).getStyleClass() ;
}

尝试所示的方法,然后请您的问题包含一个显示您修改的方法的示例。该示例对我没有用处,因为我不知道按钮位于哪一行或哪一列。如果您确实需要id,只需将源代码向下转换到
节点
并调用
getId()
。但最好是为每个按钮注册一个不同的侦听器(这样您就可以自动知道哪个按钮触发了事件,因为您知道侦听器是用哪个按钮注册的)。以上链接的答案就是这样做的。不清楚为什么不能使用这种方法。它只会给我很多不必要的代码,因为所有方法基本上都应该做同样的事情,它们是棋盘游戏中的砖块。@knut:行和列作为参数传递给
createGridButton()
;嵌套侦听器在调用
getGridButton()
时使用它们。或者,您可以将
setId()
转换为所需的任何字符串。