首页 > 解决方案 > 表格不绘制以下行

问题描述

我试图用一个阶段绘制多个表,到目前为止它适用于不同行中的两个表,但是当我尝试添加第三个或第四个时它不起作用。我试图单独绘制表格,它们可以工作,但不能组合起来,这很有趣,因为它们适用于 2 个表格......

我尝试单独绘制表格,它们可以工作,但不能组合在一起。

public void setupScreen() {
    TextureAtlas menuUi = assetManager.get(Assetdescriptor.backGround);
    TextureRegion backGroundRegion = menuUi.findRegion(Regionnames.backGround);

    Skin menuSkin = assetManager.get(Assetdescriptor.skinUI);


    TextButton team1 = new TextButton("Team 1", menuSkin, "Team1");

    TextButton team2 = new TextButton("Team 2", menuSkin, "Team1");

    TextButton team3 = new TextButton("Team 3", menuSkin, "Team3");

    TextButton team4 = new TextButton("Team 4", menuSkin, "Team4");

    TextButton team5 = new TextButton("Team 5", menuSkin, "Team5");


    TextButton player1 = new TextButton("Spieler 1", menuSkin);
    player1.addListener(new ChangeListener() {
        @Override
        public void changed(ChangeEvent event, Actor actor) {
            System.out.println("Clicked");
        }
    });

    TextButton player2 = new TextButton("Spieler 2", menuSkin);

    TextButton kiPanzer1 = new TextButton("Ki Panzer 1", menuSkin);

    TextButton kiPanzer2 = new TextButton("Ki Panzer 2", menuSkin);

    TextButton kiPanzer3 = new TextButton("Ki Panzer 3", menuSkin);


    Table teamTable1 = new Table();
    Table teamTable2 = new Table();
    Table teamTable3 = new Table();
    Table teamTable4 = new Table();
    Table teamTable5 = new Table();



    Table TeamOverview = new Table();
    Table spieler1= new Table(); // Spieler 1
    Table spieler2= new Table(); // Spieler 2
    Table Ki3     = new Table(); // Ki Panzer
    Table Ki4     = new Table(); // Ki Panzer
    Table Ki5     = new Table(); // Ki panzer


    spieler1.add(player1);
    spieler2.add(player2);
    Ki3.add(kiPanzer1);
    Ki4.add(kiPanzer2);
    Ki5.add(kiPanzer3);


    TeamOverview.add(team1, team2, team3, team4, team5);

    teamTable1.center();
    teamTable1.add(spieler1,spieler2,Ki3,Ki4,Ki5);
    teamTable2.center();
    teamTable2.add(spieler1,spieler2,Ki3,Ki4,Ki5);
    teamTable3.center();
    teamTable3.add(spieler1,spieler2,Ki3,Ki4,Ki5);
    teamTable4.center();
    teamTable4.add(spieler1,spieler2,Ki3,Ki4,Ki5);



    Table table = new Table();
    table.add(TeamOverview);
    table.add(teamTable1).row();
   -- -These are the tables which dont work---
    table.add(teamTable2).row();
    table.add(teamTable3).row();
    table.add(teamTable4).row();
    -----------------------------------


    table.setFillParent(true);
    table.setBackground(new TextureRegionDrawable(backGroundRegion));
    table.pack();

    stage.addActor(table);

}

没有错误消息,但绘图没有变化预期结果是 6 行但只有 2 行。

标签: javalibgdxscene2d

解决方案


据我所知,您不允许重复使用相同的对象(spieler1、spieler2、Ki3、Ki4、Ki5)。每次将它们添加到不同的表时创建唯一的实例。

检查 com.badlogic.gdx.scenes.scene2d.Group#addActor (其中 Table 扩展自)

    public void addActor (Actor actor) {
        if (actor.parent != null) {
            if (actor.parent == this) return;
            actor.parent.removeActor(actor, false);
        }
        children.add(actor);
        actor.setParent(this);
        actor.setStage(getStage());
        childrenChanged();
    }

一个演员只能有一个父母,前一个被删除。你的表可能仍然有你想要的所有行,它们只是空的。您可以使用 setDebug(true) 查看绘图“线条”。

编辑
无论如何,这个问题似乎是重复的。请参阅
如何在一个舞台上不同位置绘制同一个演员的多个副本?


推荐阅读