表格控件在列上设置了generator之后导致点击无法选中当前行

在generator里创建了一个Label控件,发现当鼠标点击到Label上后无法选中当前行了(好像是单击事件没有冒泡),如果换Table.PlainTextCell是没问题的,但是Table.PlainTextCell没法设置对齐方式。请问怎么解决?
···

 public Component generateCell(Order entity) {
        Label label = uiComponents.create(Label.NAME);
        Product product = order.getProduct();
        label.setValue(product.getName() + ", " + product.getCost());
        return label;
    }

想要的对齐方式是指?

Table 组件可以用 setStyleProvider() 方法为 cell 设定 styleName,然后在 css 里面可以针对不同的 styleName 设置不同的样式,示例

我需要放一个图标和文字,所以用了Hbox,image,label。现在的问题是image和label阻挡住了点击事件导致无法选中该行,请问有没有办法解决,谢谢!

可以用布局组件的 addLayoutClickListener():

    @Subscribe
    public void onInit(InitEvent event) {
        table.addGeneratedColumn("test", entity -> {
            HBoxLayout hBox = uiComponents.create(HBoxLayout.class);
            Image image = uiComponents.create(Image.class);
            Label<String> label = uiComponents.create(Label.class);

            try {
                image.setSource(UrlResource.class)
                        .setUrl(new URL("https://www.cuba-platform.com/sites/all/themes/cuba_adaptive/img/lori.png"));
            } catch (MalformedURLException e) {
                e.printStackTrace();
            }
            
            label.setValue("Test Label");

            hBox.add(image);
            hBox.add(label);

            hBox.addLayoutClickListener((hBoxEvent)->{
               table.setSelected(entity);
            });

            return hBox;
        });
    }

感谢,OK了

在表格在多选模式的时候,这种办法会出现问题(无法使用shift键和ctrl键正确多选)。有没有其他的办法将点击事件传给单元格呢

还能抢救吗?大神们

或者有什么办法能让PlainTextCell支持html也行

改用 DataGrid 能满足你的要求吗?自带 HtmlRenderer ,示例

看来只能换组件了,哎

换成了TreeDataGrid还是用的控件,但是没有这个点击问题了,只是文字不能居中。

1 个赞