背景信息:我目前在为我的游戏扩展的Dialog类中工作。在此对话框的内容表中,我既有图像又有表(我们称之为ioTable)。在ioTable内部,我同时具有Labels和TextFields。这个想法是对话框变成一种供填写的形式。

接下来,在对话框的按钮表中,我想包含一个“清除” TextButton(clearButton)。 clearButton将清除所有写入ioTable的TextField的值的想法。

我的问题:是否可以向ioTable的每个TextField添加一个侦听器,该监听器将在按下clearButton时触发。与往常一样,任何其他创意解决方案都倍受欢迎。

最佳答案

您可以只给EventListener引用要清除的表:

// Assuming getSkin() and ioTable are defined elsewhere and ioTable is final
TextButton clearButton = new TextButton("Clear", getSkin());
clearButton.addListener(new EventListener() {
  @Override
  public boolean handle(Event event) {
    for(Actor potentialField : table.getChildren()) {
      if(potentialField instanceof TextField) {
        ((TextField)potentialField).setText("");
      }
    }
    return true;
  }
});
// Add clearButton to your dialog


如果您看到自己创建了多个clearButtons,则可以轻松地将其包装在辅助方法中或扩展TextButton

10-06 14:47