Java 如何更改LibGDX表中的对齐方式?

Java 如何更改LibGDX表中的对齐方式?,java,libgdx,Java,Libgdx,我在libgdx中有一个代表游戏屏幕控制器的表。其中两个按钮位于左侧,一个位于右侧。当我试着让桌子转到右边时,它仍然在左边 public class Controller { Viewport viewport; Stage stage; boolean upPressed; boolean downPressed; boolean leftPressed; boolean rightPressed; OrthographicCame

我在libgdx中有一个代表游戏屏幕控制器的表。其中两个按钮位于左侧,一个位于右侧。当我试着让桌子转到右边时,它仍然在左边

public class Controller {

    Viewport viewport;
    Stage stage;

    boolean upPressed;
    boolean downPressed;
    boolean leftPressed;
    boolean rightPressed;

    OrthographicCamera cam;

    public Controller(){
        cam = new OrthographicCamera();
        viewport = new FitViewport(800, 480, cam);

        stage = new Stage(viewport, OverlayDemo.batch);
        Gdx.input.setInputProcessor(stage);

        Table table = new Table();
        table.left().bottom();

        Image upImage = new Image(new Texture("flatDark25.png"));
        upImage.setSize(80, 80);
        upImage.addListener(new InputListener(){
            @Override
            public boolean touchDown(InputEvent event, float x, float y, int pointer, int button) {
                upPressed = true;
                return true;
            }

            @Override
            public void touchUp(InputEvent event, float x, float y, int pointer, int button) {
                upPressed = false;
            }
        });

        Image leftImage = new Image(new Texture("flatDark23.png"));
        leftImage.setSize(80, 80);
        leftImage.addListener(new InputListener(){
            @Override
            public boolean touchDown(InputEvent event, float x, float y, int pointer, int button) {
                leftPressed = true;
                return true;
            }

            @Override
            public void touchUp(InputEvent event, float x, float y, int pointer, int button) {
                leftPressed = false;
            }
        });

        Image rightImage = new Image(new Texture("flatDark24.png"));
        rightImage.setSize(80, 80);
        rightImage.addListener(new InputListener(){
            @Override
            public boolean touchDown(InputEvent event, float x, float y, int pointer, int button) {
                System.out.println("Right pressed");
                rightPressed = true;
                return true;
            }

            @Override
            public void touchUp(InputEvent event, float x, float y, int pointer, int button) {
                rightPressed = false;
            }
        });

        table.bottom().left();
        table.pad(10);
        table.add(leftImage).size(leftImage.getWidth(), leftImage.getHeight());
        table.add(rightImage).padLeft(20).size(rightImage.getWidth(), rightImage.getHeight());

        table.bottom().right();
        table.pad(10);
        table.add(upImage).size(upImage.getWidth(), upImage.getHeight());

        table.pack();

        stage.addActor(table);
    }


    public void draw(){
        stage.draw();
    }

    public boolean isUpPressed() {
        return upPressed;
    }

    public boolean isRightPressed() {
        return rightPressed;
    }

    public boolean isDownPressed() {
        return downPressed;
    }

    public boolean isLeftPressed() {
        return leftPressed;
    }

    public void resize(int width, int height){
        viewport.update(width, height);
    }
}

在我调用
.bottom().right()
的部分中,它应该将对齐切换到右侧。如何解决此问题?

您的错误是对齐了
表本身,而不是底层的
单元格。align方法应该在
add(actor)
之后调用,因此您的代码应该如下所示

table.add(leftImage).size(leftImage.getWidth(), leftImage.getHeight()).pad(10).bottom().left();
table.add(rightImage).padLeft(20).size(rightImage.getWidth(), rightImage.getHeight()).pad(10).bottom().left();

table.add(upImage).size(upImage.getWidth(), upImage.getHeight()).pad(10).bottom().right();

table.pack();

stage.addActor(table);
我还建议您调用
table.setFillParent(true)
,因为它似乎是根表。
对于表的进一步阅读,您可以查看。

我不清楚上述代码是否都在相同的方法中。您应该通过显示包含此代码的一个或多个类和方法来编辑您的问题以澄清这一点。在同一方法中,哪个类包含此代码?处理输入的控制器类;该表用于布局屏幕上的按钮,请在代码中显示。还要解释更多关于您期望代码完成什么的内容。我不清楚你想要什么结果。