独立计划中的公共变量

时间:2015-07-27 03:33:00

标签: java swing user-interface netbeans

我正在编写一个随机发出扑克牌的小型Java程序,然后在窗口中将它们显示在屏幕上。

由于我使用NetBeans,因此我启动了GUI,并且我一直在编写我的方法来随机选择卡片,设置一个阵列来存储卡片是否已被处理,等等,NetBeans在构建JFrame时为我设置了同一类。

我希望将所有非GUI代码移动到自己的类中,然后根据需要将数据传递回GUI类以显示卡片,但我不确定最好的在两个类之间共享数据的方法。

我知道set / get方法,我知道我可以创建公共类级变量,但我读过的所有内容都告诉我尽量避免使用它们。

现在我有一个方法可以为每张处理的卡生成1到52之间的int。 1 =黑桃王牌,2 =黑桃2等。一旦GUI有这个号码,它就可以在屏幕上的适当位置显示相应的牌(或者至少它可以在我编码后事物的GUI方面)。如果我想将该整数值传递给GUI类,然后根据该值在屏幕上显示特定的卡,我应该怎么做?

对我来说,一个公共变量会让这很容易,就像一个简单的get方法一样......但是为了避免这些选择,有另一种方法吗?

如果有帮助,我可以提供代码段。

1 个答案:

答案 0 :(得分:1)

这是使用OO概念开始实现这个想法的一种方式。

制作课程以代表卡片。

public class Card {
    // FIELDS
    // card name
    private final String name;
    // card value (number)
    private final int value;
    // another arbitrary value to demonstrate setter
    private Object arbitraryValue;


    public Card(String name, String value) {
        this.name = name;
        this.value = value;
    }

    public String getName() {
        return this.name;
    }

    public int getValue() {
        return this.value;
    }

    public Object getArbitraryValue() {
        return this.arbitraryValue;
    }

    public void setArbitraryValue(Object arbitraryValue) {
        this.arbitraryValue = arbitraryValue;
    }
}

创建 CardManager 类以保存与处理卡有关的方法(例如实用程序方法和卡数据存储)

public class CardManager() {
    private List<Card> cards = new ArrayList<Card>();

    public void addCard(Card card) {
        this.cards.add(card);
    }

    // and so on...your methods here.
}

最后,为您的GUI( CardGUI )管理创建一个类,并使用其他类来管理它。

你可以这样做:

public class CardGUI() {
    public static void main(String[] args) {
        // create your GUI and put your logic here...
        // also use your other classes, perhaps like so.
        Card card = new Card("One", 1);
        CardManager cardManager = new CardManager();
        cardManager.addCard(card);

        // From there you can manage your cards through other classes.
}

希望这有助于/演示如何按照标准在类之间共享数据。

修改 要回答有关如何获得该值的问题,请参阅上面的类。您可以简单地创建一个新卡(Card card = new Card("name", intval);),然后使用方法Card#getValue()获取该值并将其显示在GUI中。