gpt4 book ai didi

java - 如何调用 GWT 中单个事件处理程序类中编写的相应 Java 方法(针对每个按钮)?

转载 作者:行者123 更新时间:2023-11-30 04:25:40 24 4
gpt4 key购买 nike

我想在单击不同按钮时调用不同的方法(位于单个 GWT 事件处理程序类中)?是这样的:

假设我的 UI 中有 3 个按钮:

  1. 按钮1
  2. 按钮2
  3. 按钮3

而且,我为它们每个附加了相同的(点击)EventHandler:ButtonClicker

在 OnClick() 方法中,我想调用与所单击的按钮相对应的方法。下面是一些示例代码,可以更好地说明我想要做的事情:

public class ButtonClicker implements ClickHandler 
{
public void onClick(ClickEvent event)
{
PushButton clickedButton = (PushButton) event.getSource();

// I could call the corresponding method using if-else condition but I do not want to do that.
// Instead, I want some code here, may be using JSNI (using eval in some way) or something like that to call the corresponding method.
......
}

private void Button1Click()
{
// Code to handle Button1 Click
}

private void Button2Click()
{
// Code to handle Button2 Click
}

private void Button3Click()
{
// Code to handle Button3 Click
}
}

提前致谢。

最佳答案

我想你有充分的理由走这条复杂的路线,所以这里有一个建议,不包括任何判断:

JavaScriptObject map = createMap(this);

private static native JavaScriptObject createMap(ButtonClicker o) /*-{
// Note: does not use $entry() as this will be called from GWT code
return {
"button1": function() { o.@foo.ButtonClicker::Button1Click()(); },
"button2": function() { o.@foo.ButtonClicker::Button2Click()(); },
"button3": function() { o.@foo.ButtonClicker::Button3Click()(); }
};
}-*/;

private static native void call(JavaScriptObject map, String id) /*-{
var fn = map[id];
// TODO: add null-check / fallback behavior
fn();
}-*/;

@Override
public void onClick(ClickEvent event) {
call(map, ((UIObject) event.getSource()).getElement().getId());
}

关于java - 如何调用 GWT 中单个事件处理程序类中编写的相应 Java 方法(针对每个按钮)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15911974/

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