当选择一个时,gwt列表框组其他应取消选择

当选择一个时,gwt列表框组其他应取消选择,gwt,Gwt,我想创建一个自定义组件,它可以有N个列表框,当选择一个列表框时,其他列表框应该取消选择。有没有办法做到这一点。。谁能给我推荐一下吗 提前谢谢 是的,你可以这样做 一种方法是和内部事件总线- 1) 为自定义小部件创建事件总线 2) 创建自定义选定事件 3) 创建的每个listbox都应该为此自定义选定事件向此事件总线注册一个处理程序 4) 如果一个列表被选中/聚焦(当您希望取消选择其他列表时),它将在事件总线上触发带有其Id的自定义选定事件 5) 其他列表框将接收此事件,检查它是否来自它们,如果不

我想创建一个自定义组件,它可以有N个列表框,当选择一个列表框时,其他列表框应该取消选择。有没有办法做到这一点。。谁能给我推荐一下吗

提前谢谢

是的,你可以这样做

一种方法是和内部事件总线-

1) 为自定义小部件创建事件总线

2) 创建自定义选定事件

3) 创建的每个listbox都应该为此自定义选定事件向此事件总线注册一个处理程序

4) 如果一个列表被选中/聚焦(当您希望取消选择其他列表时),它将在事件总线上触发带有其Id的自定义选定事件

5) 其他列表框将接收此事件,检查它是否来自它们,如果不是,将取消选择/将选择设置为空


另一种方法,而不是让事件总线控制它,是创建一个在选择时被调用的自定义函数,该函数必须遍历所有列表并取消选择它们。

Jai给了您一些好主意,但下面是我的类似功能代码(不是N个列表框,但您应该能够扩展/概括它):

如您所见,我使用了UiHandler语法,并在onFocus事件期间执行了“IsSelected”检查。英文:

  • 如果任何列表框都选择了一个项目(如果没有任何列表框选择了一个项目,则没有意义选中所有列表框)
  • 如果列表框1选择了一个项目,并且(焦点)事件来自任何其他列表框:
    • 是-取消选择列表框1项
    • 否-对列表框2重复步骤2。。。N

  • 嗨,Jai,谢谢你的回复,你有没有什么样的代码可以帮我做到这一点。很遗憾,我有一些代码不能分享。但这不应该太难。如果您对事件总线不满意,请尝试解决方案2。创建一个带有列表框数组的自定义小部件,每个列表框都有一个自定义调试id。为每个列表添加一个选择处理程序,该处理程序调用一个函数,该函数遍历所有其他列表并取消选择它们。尽可能多地尝试创建,如果遇到问题,你可以问一些具体的问题。我对GWT非常陌生,如果你为此提供了示例代码,请提供给我,同时我会尝试。
    @UiHandler({ "listBox1", "listBox2" })
    public void onFocus(FocusEvent e) {
      // If one ListBox has an item selected, and the user click's the other, unselect previous (mutually exclusive).
      if (listBox1.getSelectedIndex() > -1 || listBox2.getSelectedIndex() > -1) {
        if (listBox1.getSelectedIndex() > -1 && e.getRelativeElement() == listBox2.getElement()) {
          listBox1.setSelectedIndex(-1);
        }
        else if (listBox2.getSelectedIndex() > -1 && e.getRelativeElement() == listBox1.getElement()) {
          listBox2.setSelectedIndex(-1);
        }
      }
    }