我正在编写一个随机发出扑克牌的小型Java程序,然后在窗口中将它们显示在屏幕上。
由于我使用NetBeans,因此我启动了GUI,并且我一直在编写我的方法来随机选择卡片,设置一个阵列来存储卡片是否已被处理,等等,NetBeans在构建JFrame时为我设置了同一类。
我希望将所有非GUI代码移动到自己的类中,然后根据需要将数据传递回GUI类以显示卡片,但我不确定最好的在两个类之间共享数据的方法。
我知道set / get方法,我知道我可以创建公共类级变量,但我读过的所有内容都告诉我尽量避免使用它们。
现在我有一个方法可以为每张处理的卡生成1到52之间的int。 1 =黑桃王牌,2 =黑桃2等。一旦GUI有这个号码,它就可以在屏幕上的适当位置显示相应的牌(或者至少它可以在我编码后事物的GUI方面)。如果我想将该整数值传递给GUI类,然后根据该值在屏幕上显示特定的卡,我应该怎么做?
对我来说,一个公共变量会让这很容易,就像一个简单的get方法一样......但是为了避免这些选择,有另一种方法吗?
如果有帮助,我可以提供代码段。
答案 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中。