Java 在libgdx中的表中设置可见不工作?

Java 在libgdx中的表中设置可见不工作?,java,user-interface,libgdx,Java,User Interface,Libgdx,我有以下问题: 我试图使用表格布局在libgdx中实现一个带有子菜单的菜单。单击子菜单时,将触发一个侦听器,该侦听器应将上一个菜单设置为可见(false),将新菜单设置为可见(true)。但是,虽然我成功地显示了新的,但上一个仍然在这里!有人能帮我吗 这是我的密码: Menu.java: public class Menu extends Table { private Stage stage; public void attachToStage(Stage s) { if (

我有以下问题:

我试图使用表格布局在libgdx中实现一个带有子菜单的菜单。单击子菜单时,将触发一个侦听器,该侦听器应将上一个菜单设置为可见(false),将新菜单设置为可见(true)。但是,虽然我成功地显示了新的,但上一个仍然在这里!有人能帮我吗

这是我的密码:

Menu.java:

public class Menu extends Table {
  private Stage stage;

  public void attachToStage(Stage s) {
    if (s != null) {
      stage = s;
      s.addActor(this);
    }
  }

  public Menu() {
    this(null);
  }

  public Menu(final Stage s) {
    attachToStage(s);
    setFillParent(true);
    top();
    left();
  }

  private void addButtonWithListener(String label, ClickListener listener) {
    add().width(10);
    Label l = new Label(label, SkinManager.get());
    add(l).width(100);
    row();
    if (listener != null)
      l.addListener(listener);
  }

  /**
   * @param label
   * @return The menu, for chaining
   */
  public Menu addButton(String label) {
    addButtonWithListener(label, null);
    return this;
  }

  /**
   * 
   * @param label
   * @param m
   *          the menu to add
   * @return The main menu, for chaining
   */
  public Menu addMenu(String label, final Menu m) {
    addButtonWithListener(label, new ClickListener() {
      @Override public void clicked(InputEvent e, float x, float y) {
        System.out.println(getChildren());
        setVisible(false);
        m.setVisible(true);
      }
    });
    m.attachToStage(stage);
    m.setVisible(false);
    return this;
  }
}
我的申请:

public class TestApplication implements ApplicationListener {
  private Stage stage;

  @Override public void create() {
    stage = new Stage();
    Menu m = new Menu(stage).addButton("Move").addButton("Stay");
    m.addMenu("Attack", new Menu().addButton("Sword").addButton("Bow"));
    Gdx.input.setInputProcessor(stage);
  }

  @Override public void render() {
    stage.draw();
  }
   // Other empty methods
}
非常感谢


编辑:问题与此无关,请参见我的答案

确定,发现问题:与表格完全不相关,只需放弃清除应用程序中的屏幕即可

我刚才补充说

Gdx.gl.glClearColor(0, 0, 0, 0);
Gdx.gl.glClear(GL10.GL_COLOR_BUFFER_BIT);
在render函数中。

try((小部件)e.getTarget()).setVisible(false);而不是setVisible(false);