改札口の問題で本当に助かります。
PropertyColumn のすべての行に (マウス ホバーで) ツールチップを追加したいと考えています。しかし、どうすればそれができますか?Abstractcolumn を使用したソリューションを見てきました。しかし、propertyExpression が必要で、sortProperty は必要ないため、PropertyColumn を使用する必要があります。
DataTable
1 つの方法は、次のように変更することです。
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);
}
});
私は今、解決策を見つけました。
まず知っておくべき重要なことは、populateItem-Method には少なくとも 1 つのオブジェクトが含まれている必要があるということです。たとえば、ラベル。文字列やツールチップをセルに追加できないためです。そのため、ラベルを付けて、そのラベルに文字列を追加する必要がありました。その後、ラベルに 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);
}