我正在使用两个表,第一个包含“团队”,第二个包含“团队成员”,并根据第一个表选择进行填充。我也根据选择显示各种统计数据,无论是团队还是特定成员。如果未选择任何成员,则会显示团队统计信息,否则将显示成员统计信息。
我在表格上使用ItemChangeListeners来重绘统计数据,但是这使我无法点击已经选定的团队来“取消选择”该团队中的选定成员,因为在这种情况下不会触发任何事件。作为一个解决方案,我也在Team表上使用ClickListener,但是它似乎只有在我单击该单词时才有效(而不是在整个单元格上工作)。
teamsTable.setClickListener("name", new Table.CellClickListener() {
@Override
public void onClick(Entity item, String columnId) {
if (teamsDs.getItem() == item) {
teamsDs.setItem(null);
teamsDs.setItem((Team) item);
} else {
teamsDs.setItem((Team) item);
teamsTable.setSelected((Team) item);
}
}
});
有没有更好的方法来捕获表格单元格上的点击?或者有更好的方法来解决这个问题吗?
答案 0 :(得分:3)
由于CUBA Table是Vaadin表的包装器,您可以使用Vaadin中的ItemClickListener和CUBA表:
public class DemoScreen extends AbstractWindow {
@Inject
private Table<User> usersTable;
@Override
public void init(Map<String, Object> params) {
super.init(params);
com.vaadin.ui.Table vTable = usersTable.unwrap(com.vaadin.ui.Table.class);
vTable.addItemClickListener((ItemClickEvent.ItemClickListener) event ->
showNotification("Item " + event.getItemId())
);
}
}
每次单击表格单元格时都会触发。