我是 Java/JavaFX 的新手(我昨天晚上开始的)。我正在构建一个读取 MySQL 数据库的动态 GUI (crud)。
- 我设法在表格中显示数据并在每一行旁边添加一个按钮。
- 由于按钮的数量是可变的,我只想定义一个通用的事件处理程序。
问题是,每当我使用 event.getSource()(它是一个 ActionEvent)并显示它时,我都会得到类似“Button[id=0, styleClass=button].
问题 1:有什么办法可以将 id 放入变量中?我无法将其从对象中取出。
据我所知,我必须使用 id,因为我不能做这样的事情 "if(event.getSource() == somebutton) {...}" 因为每个生成的按钮都有相同的变量名。
现在,这是构建按钮的循环(在名为 make_buttons 的方法内)。n_buttons 是我要构建的按钮数。
for(int counter = 0; counter < n_buttons; counter++){
String newtext = new String("btn"+counter);
Button btn = new Button();
btn.setText(newtext);
btn.setId(Integer.toString(counter));
btn.setOnAction(myHandler);
grid.add(btn,0,counter);
}
请注意,我将按钮放在另一个网格窗格上。
在这部分之前,我有我的处理程序:
final EventHandler<ActionEvent> myHandler = new EventHandler<ActionEvent>(){
public void handle(final ActionEvent event) {
Object new_output = event.getSource();
System.out.println(new_output);
event.consume();
}
};
问题 2:那么,在我的特定情况下,如何区分哪个按钮触发了事件?
我知道很多编程语言(Matlab、R、Python、C、Assembly 等……但我是个业余爱好者),但这是我第一次使用 GUI 元素(Web 语言和 ActionScript 3 除外) . 在 actionscript 中,我可以做一些类似 event.getCurrentTarget 的事情,并像对象本身一样使用它来读取 id、属性等。
我到处找,找不到任何东西(也许我的术语有点近似......)。