基本上,如果用户没有点击树,我只想清除对树的选择。我当前的代码是:
entityTree.addListener(new ClickListener() {
@Override
public void clicked(InputEvent event, float x, float y) {
if (entityTree.getNodeAt(y) == null) {
entityTree.getSelection().clear();
}
}
});
但它不起作用有两个原因:
- 只有在实际单击了树时才会调用
clicked
。如果单击某个按钮或其他任何位置,则树不会得到单击事件 - 当前代码只检查y分量。它应该与检查是否达到树边界的代码相结合
tree.getStage().addListener(new InputListener() {
@Override
public boolean touchDown(InputEvent event, float x, float y, int pointer, int button) {
if (tree.getStage().hit(x, y, true) != tree || tree.getNodeAt(y) == null)
tree.getSelection().clear();
return false;
}
});