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

时间:2011-07-20 19:03:12

标签: 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 = 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());

        }
    };

上面的代码有效,但现在我正在尝试实现一个操作,而不是用户单击复选框,我希望用户单击一行(表格的任何单元格)并使整行(用户已选择)要突出显示。所以我在下面实现了这个代码,但到目前为止它不起作用(像mouseclick将不会注册,我还没有实现颜色的东西.. :()。任何建议?

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.
        }
    };

非常感谢!!!!

1 个答案:

答案 0 :(得分:2)

如果您将userRowCheck添加到FlexTable:myFlexTable.addClickHandler(userRowCheck);,它应该有效。只需确保为src测试null,因为如果您没有在窗格中放置窗口小部件并且用户点击该窗格,则会返回null