Wicket - 将工具提示添加到PropertyColumn中的每个单元格

时间:2013-08-14 14:30:23

标签: java wicket

我真的需要你的帮助来解决问题。

我想在PropertyColumn中为所有行添加工具提示(通过鼠标悬停)。但是我怎么能这样做呢?我见过带有Abstractcolumn的解决方案。但是我必须使用PropertyColumn,因为我需要propertyExpression而不需要sortProperty。

2 个答案:

答案 0 :(得分:3)

一种方法是像这样修改DataTable

add(new DefaultDataTable("wicektid", null, null, 10) {

    @Override
    protected Item newCellItem(String id, int index, IModel model) {
        Item item = super.newCellItem(id, index, model); 
        item.add(AttributeModifier.replace("title", "Your Title"));
        return item;
    }

    @Override
    protected Item newRowItem(String id, int index, IModel model) {
        Item item = super.newRowItem(id, index, model); 
        item.add(AttributeModifier.replace("title", "Your Title"));
        return item;
    }

});

如果您想要整行或单个单元格上的工具提示,您可以在此控制。

如果您想在某些列中执行此操作,可以在列中覆盖populateItem,如下所示:

add(new PropertyColumn<>(){

    @Override
    public void populateItem(Item<ICellPopulator<T>> item, String componentId, IModel<T> rowModel) {
        super.populateItem(item, componentId, rowModel); 
    }

});

答案 1 :(得分:2)

我现在找到了解决方案。

首先,重要的是要知道,在populateItem-Method中,必须至少有一个对象。例如标签。因为您无法在没有任何内容的情况下向单元格添加字符串或工具提示。所以我不得不在其中添加一个标签并将该字符串添加到该标签中。之后我在标签上添加了PrototipBehavior:

 public void populateItem(final Item cellItem, final String componentId, final IModel model) {
                Long id = ((MyObject) model.getObject()).getId();
                String desc = ((MyObject) model.getObject()).getDescription();
                Label l = new Label(componentId, id + "");
                l.add(new PrototipBehaviour(desc));
                cellItem.add(l);

            }