我正在尝试为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(来自另一个类)添加到我的主框架中
提前致谢。
答案 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);}
}