从另一个类添加对象到JFrame?

时间:2011-05-07 04:16:07

标签: java arrays

我正在尝试为Java中的最终项目创建一个二十一点程序。我还是Java和OOD的新手,所以如果我的问题对你来说非常微不足道,我道歉:(

我的计划如何运作:到目前为止,我有三个班级。

main.java 这个类构建我的框架并运行所有其他方法。

cards.java 此类创建一个数组,用于保存卡片值和图片位置。我在那里有一个自动填充它的for循环。

hits.java 此类旨在“随机”生成代表所选卡的数字。它的工作方式是通过随机创建的 int 并将其指向数组上匹配的索引位置。

我将值赋给字符串对象,然后我尝试将其添加到jlabel,然后将该jlabel添加到我的主框架中。代码如下:

hits.java

// Import necessary classes.
import java.util.Random;

public class hits {
// Create random object.
Random rand = new Random();

// Declare variables.
int card;
String cardVal, cardPic;

// Instantiate the needed classes.
main s = new main();
cards t = new cards();

// Constructor for the class.
public hits() {
    // Randomly generate a number (0 - 9).
    card = rand.nextInt(10);

    // Populate the array.
    t.runCards();

    // Assign the cards according to the num. generated.
    cardVal = t.deck[card][0];
    cardPic = t.deck[card][1];
}
// Run Method
public void runHits() {
    // Add the card chosen to the GUI.
    s.a.setText("hello");
    s.dealerCards.add(s.a);
}
}

我有“hello”作为标签的文本,因为我想看看我的数组是否没有填充,但即使这样也行不通。如果它有帮助,那么我的 main.java (构造函数和main方法):

// Constructor for the main class.
public main() {
    // Setup the MAIN container.
    f1.getContentPane().setLayout(new GridLayout(0, 1));
    f1.setSize(200, 200);
    f1.add(dealerName);
    f1.add(dealerCards);
    f1.add(userCards);
    f1.add(userName);

    // Setup the inner panels.
    dealerCards.setLayout(new GridLayout(1, 2));
    dealerCards.add(b);
    userCards.setLayout(new GridLayout(1, 6));
    userCards.add(c);
    userCards.add(d);
}
// Build the frame.
public void GUILaunch() {
    // Display Frame
    f1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    f1.setVisible(true);
}
// Main method.
 public static void main(String args[]) {
     // Distribute the dealer's/player's starting hands.
     hits deal = new hits();
     deal.runHits();

     // Launch the GUI
     main gui = new main();
     gui.GUILaunch();
}

希望我提供了足够的信息来帮助您了解这里发生了什么。总而言之:如何将我的jlabel(来自另一个类)添加到我的主框架中

提前致谢。

1 个答案:

答案 0 :(得分:1)

deal.runHits()为处理拥有而不是gui对象的Main对象添加标签。

我建议如下:

让你的主类有一个命中实例,命中有一个卡对象的实例...... 所以你得到这样的东西

public class main {

private hits hits_instance

//constructor

main(){ hits_instance = new hits(); }

//this method will add your cards

public void addCards(){
// frame = whatever frame you are using
frame.add(hits_instance.getCards());

}

}

public class hits {

private cards cards_instance;

hits(){ cards_instance= new cards();}

public JLabel getCards() {return cards_instance.getCard(randomNumber);}
}