0

我应该创造一个游戏,我们已经被赋予了创造它的自由……但我不知道我在做什么。我复制了以前实验室的格式,因为我需要一种方法来运行它,但现在我遇到了问题。我的 Gui 类如下:

public class Gui implements Runnable {
    public Gui() { }
    ArrayList<Tile> _al;

    @Override
    public void run() {
          //where I want the _al variable to be used
    }
}

我复制的代码使用了一个 Driver 类来运行这个方法:

public class Driver {
    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Gui());
    }
}

我们还没有在课堂上讨论过这个方法,但是从谷歌上我了解到这是程序运行所必需的。实验室的难度大幅增加,所以我现在迷路了。我确信有一种简单的方法来格式化所有代码,但我不知道 run 方法和 main 之间的关系是什么,或者我如何才能使它在我的代码中建立关​​联关系。我搜索的任何东西都没有真正帮助,所以我希望这个问题没问题。

如果所有代码都在 run() 方法中,如何关联实例变量?

4

2 回答 2

1

您可以使 Gui 采用构造函数参数以允许共享状态更新:

public class Gui implements Runnable {
    private final List<Tile> tiles;

    public Gui(List<Tile> tiles) {
        this.tiles = tiles;
    }

    @Override
    public void run() {
          tiles.add(new Tile());
    }
}

并修改驱动程序以使用它:

public final class Driver {
    public static void main(String[] args) {
        List<Tile> tiles = new ArrayList<Tile>();
        SwingUtilities.invokeLater(new Gui(tiles));
    }
}
于 2015-11-15T02:36:58.653 回答
0

你做对了。您可以_a1run方法中使用。

_a1是一个实例变量。您可以告诉这一点,因为它没有static修饰符。同样,run是一个实例方法。因此它可以访问_a1. 然而,每个新的实例Gui都有自己的实例_a1

如果这不是您想要的,绝对最简单的解决方法是将static修饰符添加到_a1. 然后它将在 的所有实例之间共享,Gui并且仍然可以从run. 我相信 Swing 不会同时运行可运行文件,因此不应该担心并行访问。

于 2015-11-15T02:31:19.577 回答