修改在表

时间:2015-09-18 00:43:06

标签: java libgdx

在我的代码中:我在Table();(libGDX的堆栈)中创建了一个Stack();包含许多按钮和标签。

    table = new Table();
    table.setFillParent(true);

    Stack[][] stackTable = new Stack[LENGHT_TILE][LENGHT_TILE];
    Label[][] lbl = new Label[LENGHT_TILE][LENGHT_TILE];
    Button[][] btnSquares = new Button[LENGHT_TILE][LENGHT_TILE];

    for (int row = 0; row < btnSquares.length; row++) {
        for (int col = 0; col < btnSquares[0].length; col++) {

            lbl[row][col] = new Label("" + array[row][col], style);
            lbl[row][col].setAlignment(Align.center);
            lbl[row][col].setTouchable(Touchable.disabled);

            btnSquares[row][col] = new Button(new Image(texture).getDrawable());

            stackTable[row][col] = new Stack();
            stackTable[row][col].add(btnSquares[row][col]);
            stackTable[row][col].add(lbl[row][col]);

            table.add(stackTable[row][col]);
   }
       }
  stage.addActor(table);

我无法修改这些按钮或标签的宽度,高度,大小和比例。为什么??

1 个答案:

答案 0 :(得分:1)

我不明白你在这做什么。为什么需要将所有这些actor存储在多维数组中?我建议你开始小一些:

Table table = new Table();
Stack stack = new Stack();
TextButton frontButton = new TextButton("Front", skin);
TextButton backButton = new TextButton("Back", skin);

stack.add(backButton);
stack.add(frontButton);

//Now this should work fine
table.add(stack).height(...).expandX(...).fillX().row();

您是否将按钮存储在这些演员中供以后参考?如果你想制作瓷砖系统或光栅的somkind,那么Table完全能够在没有所有这些多维数组的情况下制作它。所以我不确定你要在这里完成什么,但它看起来不对或过于复杂如果Stack,Label和Button相关,我会为此制作一个容器类。

Class MyContainer()
{
    Stack stack;
    Label label;
    Button button;
    //Getters & setters
    //...

    public MyContainer(Stack stack, Label label, Button button)
    {
        this.stack = stack;
        //...
    }
}

现在,您可以将多个数组添加到容器中,并将其添加到列表中,而不是添加多维数组。您可以为此类中的actor添加侦听器,并且一切都很好并且包含在内。