1

** 请随时提供有关流程的反馈。可能有更好的方法来完成我正在做的事情,我只是不知道。

我有一个扩展 JPanel 的 Game 类。在该paintComponent()方法中,它根据游戏(菜单)的状态呈现不同的类。只有欢迎屏幕会显示整个窗口。即使我在 640x480 窗口上手动分配 (0, 0, 1000, 1000) 的坐标,其他人也不会填满窗口。

public void paintComponent(Graphics g) {
    super.paintComponent(g);

    if (state == State.WELCOME) {

        welcome.render(g);

    } else if (state == State.SELECTPOSITION) {

        selectPosition.render(g);

    } else if (state == State.SELECTSCENARIO) {

        selectScenario.render(g);
...

列下列出了更多具有相同逻辑的状态selectScenario()

render()2个方法如下:

welcome.render(g)

public void render(Graphics g) {
    g.setColor(Color.red);
    g.fillRect(0, 0, 640, 480);
    g.setColor(Color.white);
    g.drawString("Welcome", 50, 150);
}


selectPosition.render(g)

public void render(Graphics g) {
    g.setColor(Color.blue);
    g.fillRect(0, 0, 1000, 1000);
}

在 SelectPosition 屏幕期间,屏幕底部有一条大约 50px 高的红线。

如果您需要更多信息,请告诉我。我试图只分享相关的行。

任何帮助是极大的赞赏。

4

1 回答 1

1

我们不熟悉您的大部分代码、逻辑和程序结构,您可能希望创建并发布一个sscce让我们自己实际体验您的体验。但在我看来,您真正想做的是根据状态交换视图,例如可以使用 CardLayout 来完成。

于 2013-04-03T23:01:37.597 回答