在JFames中调用“get”方法时出错

时间:2014-01-17 01:02:26

标签: java swing getmethod

我正在制作一个黑杰克式游戏,并希望将实际二十一点框架中的下注金额传递给另一个框架,当你输赢时输出/输掉金额。我的代码是:

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

感谢任何有帮助的人,如果需要更多信息我可以发布它,被困在这一段时间,可能是一个简单的错误。谢谢 编辑: 这是blackjackframe的开始,它超过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:编辑#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 ();
    }

 }

}

1 个答案:

答案 0 :(得分:1)

您尝试使用“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);