Bla*_*bow 3 java listener handler javafx-2
我是Java/JavaFX的新手(我昨天晚上开始).我正在构建一个动态GUI(crud)读取MySQL数据库.
问题是每当我使用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);
}
Run Code Online (Sandbox Code Playgroud)
请注意,我将按钮放在另一个上面的网格窗格上.
在那之前我有我的处理程序:
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();
}
};
Run Code Online (Sandbox Code Playgroud)
问题2:那么,如何区分在我的特定情况下触发事件的按钮?
我知道很多编程语言(Matlab,R,Python,C,汇编等等......但我是业余爱好者),但这是我第一次使用GUI元素(Web语言和ActionScript 3除外) .在actionscript中,我可以像event.getCurrentTarget那样做,并使用它,就好像它是对象本身来读取id,属性等.
我到处寻找,找不到任何东西(也许我的术语有点近似......).
如果我理解您的问题是正确的,您只需使用以下代码访问handle方法中的单击按钮:
Object source = event.getSource();
if (source instanceof Button) { //should always be true in your example
Button clickedBtn = (Button) source; // that's the button that was clicked
System.out.println(clickedBtn.getId()); // prints the id of the button
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4089 次 |
| 最近记录: |