我在一个舞台(stage)中添加了一个表格(table),但是我无法让它的点击监听器(listener)起作用:
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方法。
ChangeListener
。为什么不添加一个ClickListener
呢?如果您使用ClickListener
而不是ChangeListener
,并调用setTocuhable(true)
,我猜测单击事件将被触发,Table
也会注意到它们。 - Robert P