gpt4 book ai didi

Java/JavaFX2 : dynamic GUI, 检测哪个按钮被按下,提取id

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:51:23 27 4
gpt4 key购买 nike

我是 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 元素(除了网络语言和 ActionScript 3)。在 actionscript 中,我可以只做类似 event.getCurrentTarget 的事情,并像使用对象本身一样使用它来读取 id、属性等。

我到处找了找也没找到任何东西(也许我的术语有点近似...)。

最佳答案

如果我理解你的问题是正确的,你可以简单地使用下面的代码访问你处理方法中的点击按钮:

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
}

关于Java/JavaFX2 : dynamic GUI, 检测哪个按钮被按下,提取id,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12248107/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com