我在treeTable中使用addGeneratedColumn生成了一个属性列,列的内容是vbox,内部包括label和textField两个组件,默认label是显示的,textField是隐藏的,现在我让label隐藏,textField显示,也就是让这个列进入编辑状态,请问有什么方法可以取到这个label和textField吗?
在什么情况下触发编辑呢?
有两种情况会触发,一种是点击某个按钮,这个时候是所有列都展示可以编辑的状态,另外一种就是双击某个单元格,这个时候就只有一个单元格会展示可编辑状态
说错了,第一种不是所有列,是一列中的所有单元格
没有办法直接取到,但是可以保存在类中,示例:
@Inject
private TreeTable<TestEntityOne> testEntityOnesTable;
@Inject
private UiComponents uiComponents;
private Map<UUID, Label<String>> labelMap = new Hashtable<>();
@Subscribe
public void onInit(InitEvent event) {
testEntityOnesTable.addGeneratedColumn("color", entity -> {
Label<String> colorLabel = uiComponents.create(Label.TYPE_STRING);
if (entity.getParent() != null) {
colorLabel.setValue("hasParent");
}
labelMap.put(entity.getId(),colorLabel);
return colorLabel;
});
}
@Subscribe("testEntityOnesTable")
public void onTestEntityOnesTableSelection(Table.SelectionEvent<TestEntityOne> event) {
Set<TestEntityOne> selected = event.getSelected();
for (TestEntityOne testEntityOne : selected) {
labelMap.get(testEntityOne.getId()).setValue("Selected");
}
}
好的,谢谢回复