GWT-在FlexTable的行上实现ClickHandler事件

GWT-在FlexTable的行上实现ClickHandler事件,gwt,flextable,Gwt,Flextable,因此,我的软件显示一个flextable(从数据库抓取并显示数据),用户可以点击复选框选择数据 //users is the flextable object. userCheck = new ClickHandler() { public void onClick(ClickEvent event) { CheckBox src = (CheckBox) event.getSource(); for (int i = 1, n =

因此,我的软件显示一个flextable(从数据库抓取并显示数据),用户可以点击复选框选择数据

//users is the flextable object.
userCheck = new ClickHandler() {
        public void onClick(ClickEvent event) {
            CheckBox src = (CheckBox) event.getSource();
            for (int i = 1, n = users.getRowCount(); i < n; i++) {
                CheckBox box = (CheckBox) users.getWidget(i, 0);

                if (!box.equals(src)) {
                    box.setValue(false, false);
                }
            }
            removeUserButton.setEnabled(src.getValue());
            editUserButton.setEnabled(src.getValue());

        }
    };

非常感谢

如果将
userRowCheck
添加到FlexTable:
myFlexTable.addClickHandler(userRowCheck)它应该可以工作。只要确保您测试
src
是否为
null
,因为如果您没有将小部件放入单元格中,用户单击该单元格,它将返回
null

谢谢,我尝试了用户。addClickHandler(userRowCheck);但如果我添加了这一点,当我试图打开flextable时,程序会冻结。。。。。有什么想法吗?不确定“打开”(添加数据?或单击?)是什么意思,但这可能取决于浏览器,FlexTable在某些浏览器(即IE)上速度较慢。您可以尝试使用网格来检查它是否确实是FlexTable速度。
userRowCheck = new ClickHandler() {
        public void onClick(ClickEvent event) {
            Cell src = users.getCellForEvent(event);
            int rowIndex = src.getRowIndex();
            System.out.println("Cell Selected: userRowCheck Handler, rowIndex: " + rowIndex);
            //This is just to check if this method is even called out. And well, it doesn't.
        }
    };