2

有人可以给我一个提示,因为我被卡住了。而且我还没有找到适合我的问题的解决方案。

我有一个Grid, 1-3 行。我单击该行-> 该行被选中。

我希望在单击其他位置(此行之外)但在网格内之后取消选择此行。

这是简单的屏幕截图,以帮助您更好地对其进行可视化。

在此处输入图像描述

在这种情况下我应该使用什么样的监听器?我试过ItemClickListener->没有帮助。

4

2 回答 2

1

尝试将您的网格放在单独的布局中并添加LayoutClickListener到其中:

gridLayout.addLayoutClickListener(new LayoutEvents.LayoutClickListener() {
    @Override
    public void layoutClick(LayoutEvents.LayoutClickEvent event) {
        if(grid.getSelectedRow() != null) {
            grid.deselectAll();
        }
    }
});
于 2016-11-09T19:53:32.720 回答
1
gridLayout.asSingleSelect().addSelectionListener(e->{
    if(e.getFirstSelectedItem().isPresent()) {
          system.out.println("selected");
        }else {
         // when deselected make some actions here
            system.out.println("deSelected");
        }
});

选择: 如果您第一次单击同一行数据,它将打印选择,因为您单击的内容存在值。

取消选择: 现在尝试第二次单击同一选定行,现在它将进入取消选择模式。由于取消选择时没有值。现在无需单击网格上的任何位置,您可以在同一行数据上单击两次进行选择和取消选择。

于 2019-05-15T15:10:30.317 回答