gpt4 book ai didi

java - 在 JFames 中调用 "get"方法时出错

转载 作者:行者123 更新时间:2023-12-01 13:37:13 25 4
gpt4 key购买 nike

我正在制作一个二十一点类型的游戏,并且希望将赌注金额从实际的二十一点框架传递到当您赢/输时弹出的另一个框架,显示赢/输的金额。我的代码是:

public int getBet() {
return (bet1);
}
public int getMoney() {
return (money1);
}

(上面的所有代码都在公共(public)类中,而不是公共(public)方法中)。

当我尝试将另一个框架(弹出窗口)中的这些 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());

感谢任何提供帮助的人,如果需要更多信息,我可以发布它,在这个问题上停留了一段时间,可能是一个简单的错误。谢谢编辑:这是blackjackframe的开始,它有超过2500行代码,不知道你是否想让我发布它,但是get方法在公共(public)类中......去掉了一些东西以使其更具可读性

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 ();
}

}

}

最佳答案

您尝试访问getBet(),就好像它是使用类“blackJackFrame”名称的静态方法一样。您需要确定您的 blackJackFrame 实例是否是单例。如果它是单例(每次执行只使用一次),您可以将 getBet() 方法设置为静态,并将 Text 组件设置为静态。

但是,更正确的做法是在 LoseFrame 的构造函数中添加对 blackJackFrame 的引用,并使用它。

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);

关于java - 在 JFames 中调用 "get"方法时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21176010/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com