libgdx表可以';你不能让ChangeListener点击启动吗?

libgdx表可以';你不能让ChangeListener点击启动吗?,libgdx,Libgdx,我已将一个表添加到一个阶段,但我无法为其启动单击侦听器: Table table = new Table(); table.setX(0); table.setY(0); table.setWidth(300); table.setHeight(300); table.addListener(new ChangeListener() { @Override public void changed(ChangeEvent event, Actor actor) {

我已将一个表添加到一个阶段,但我无法为其启动单击侦听器:

Table table = new Table();
table.setX(0);
table.setY(0);
table.setWidth(300);
table.setHeight(300);
table.addListener(new ChangeListener() {
    @Override
    public void changed(ChangeEvent event, Actor actor) {
        System.out.println("click");
    }
});

stage.addActor(table);
我在桌子上设置了一个背景补丁,渲染效果很好。点击没有效果。如果我向表中添加标签或按钮之类的内容,然后将相同的ChangeListener设置为这些小部件,则侦听器将正常启动

这张桌子是否需要一些特殊的处理

谢谢

---------更新-------------------

我实现此功能的唯一方法是使用EventListener阻止表实例上的所有交互:

table.addListener(new EventListener() {
    @Override
    public boolean handle(Event event) {
        return true;
    }
});
所有的事件都会像预期的那样在这里发生

我还尝试将表设置为可触摸,但ChangeListener仍然无法启动:

table.setTouchable(Touchable.enabled);
table.setListener(....);

所以我想我会坚持使用EventListener方法。

libgdx中的
表在其构造函数
setTouchable(touchable.childrenOnly)中默认情况下是不可触摸的(查看)被调用,这意味着此
参与者(`Table')将不会获得任何输入事件,但其子级将获得(查看)

因此,要为
启用输入事件,而不仅仅是为其子表启用输入事件,您需要调用
setTouchable(Touchable.enabled)


我希望这能解决您的问题。

这对我来说仍然不起作用。实现这一点的唯一方法是向面板添加EventListener,然后为handle()方法返回“true”。更新了上面的答案。@user3203425我刚刚又看了一遍这个问题,我注意到您正在使用
changelister
。为什么不添加一个
ClickListener
?如果您使用
ClickListener
而不是
ChangeListener
,并调用
setTocuhable(true)
,我猜单击事件将被触发,
表将注意到它们。