我正在制作二十一点类型的游戏,并希望将赌注金额从实际的二十一点帧传递到另一个在您赢/输时说赢/输的金额时弹出的帧。我的代码是:
public int getBet() {
return (bet1);
}
public int getMoney() {
return (money1);
}
(上面的所有代码都在公共类中,而不是公共方法中)。
当我尝试将其他框架中的任一get语句(弹出窗口)与代码一起使用时
public class LoseFrame extends JFrame {
JLabel Lost;
int bet;
public LoseFrame(){
super("LoseFrame");
JFrame LoseFrame = new JFrame("");
JPanel panel = new JPanel();
panel.setBackground(Color.LIGHT_GRAY);
Lost = new JLabel("Sorry, you busted and lost $" + blackJackFrame.getBet());
panel.add(Lost);
LoseFrame.setBounds (300, 300, 400, 70);
LoseFrame.setContentPane (panel);
LoseFrame.setVisible (true);
}
}
它给了我错误:
C:\LoseFrame.java:27: error: non-static method getBet() cannot be referenced from a static context
Lost = new JLabel("Sorry, you busted and lost $" + blackJackFrame.getBet());
感谢提供帮助的任何人,如果需要更多信息,我可以将其张贴,停留一段时间,可能是一个简单的错误。谢谢
编辑:
这是二十一点框架的开始,它有2500多行代码,不知道您是否要发布它,但是get方法在公共类之内...摆脱一些东西使其更具可读性
public class blackJackFrame extends JFrame implements ActionListener{
JLabel bet,money,card1,card2,card3,card4,card5,handscore;
JButton hit,deal,stand;
JRadioButton b10,b50,b100,b250,b500,b1000;
int bet1=1,money1=1000;
boolean gameinprogress = false,playerbust = false,dealerbust = false;
public blackJackFrame() {
编辑#2:
blackjackFrame是通过按钮从主页启动的。它使用以下代码启动:
public class PlayFrame extends JFrame implements ActionListener {
JButton slots,blackJack;
public PlayFrame(){
super("PlayFrame");
JFrame PlayFrame = new JFrame("Chrisino Lobby");
JPanel panel = new JPanel();
PlayFrame.setBounds (300, 300, 250, 100);
slots = new JButton("Slots");
blackJack = new JButton("BlackJack");
slots.addActionListener(this);
blackJack.addActionListener(this);
panel.add(slots);
panel.add(blackJack);
PlayFrame.setContentPane(panel);
PlayFrame.setVisible(true);
}
public void actionPerformed(ActionEvent e) {
JButton c = (JButton)e.getSource();
if (c.equals(slots)){
new SlotsFrame ();
}
else if (c.equals(blackJack)){
new blackJackFrame ();
}
}
}
最佳答案
您尝试使用类'blackJackFrame'的名称访问getBet()
,就好像它是静态方法一样。您需要确定blackJackFrame
的实例是否为单例。如果是单例(每次执行仅使用一次),则可以将getBet()
方法设置为静态,也可以将Text组件设置为静态。
但是,更正确的方法是在blackJackFrame
的构造函数中添加对您的LoseFrame
的引用,并使用该引用。
public class LoseFrame extends JFrame {
JLabel Lost;
int bet;
public LoseFrame(blackJackFrame bJFrame){
super("LoseFrame");
...
Lost = new JLabel("Sorry, you busted and lost $" + bJFrame.getBet());
...
}
}
您在哪里创建LoseFrame:
如果来自blackJackFrame中:
LoseFrame loseFrame = new LoseFrame(this);
如果从其他地方可以获得blackJackFrame对象的引用:
blackJackFrame framename = ...;
LoseFrame loseFrame = new LoseFrame(framename);