2014-11-25 69 views
0

我有3个jframes。用户在每个框架上回答问题后,如果他们成功了,我需要增加分数。无论用户是成功还是失败,用户都可以进入下一个框架。 我通过在其中创建一个名为calculatemark的类和一个setmark方法来完成此操作。如何增加计数器作为jframe关闭和新的jframe打开?

int total =0; 
public void setMark() { 
    total++; 
    System.out.println("Total :- " + total); 
    } 

这会增加标记。所以在每一帧我称这种方法来增加标记。问题是因为我要在每一帧上创建类calculatemark的一个实例,计数器不会随着变量初始化而增加。任何人都可以请帮助我让我知道如何实现这个?任何其他方式,我应该这样做,以增加柜台?我真的需要建立数据库连接并更新吗?我读了关于单身人士的事情?这在这里有帮助吗?请帮助我是一个新手。

回答

0
public class CalculateMark { 

int mark=0; 
public static CalculateMark calc = new CalculateMark(); 

    private CalculateMark() { 
    } 

    public static CalculateMark getInstance(){ 
     return calc; 
    } 

    public void addMark(boolean x){ 
    // x is true if answer is right 
     if(x){ 
      mark+=50; 

     } 
     System.out.println(mark); 
    } 

} 

然后说你有3帧Frame1,Frame2,Frame3。

上应答,只需调用另一个框架

CalculateMark().getInstance().addMark(true); 
    new Frame2().setVisible(true); 
    this.dispose(); 

我在#2是新的,请纠正我,如果我的回答方式是不正确的..

+0

谢谢阿伦..它的工作原理... – BrownSugar 2014-11-25 04:53:17

+0

谢谢你的编辑:) – 2014-11-25 05:11:20

0

在打开JFrame的类中实例化一个CalculateMark实例作为实例变量。

然后,在你的JFrame的子类,作出这样一个构造函数:

public MyJFrame(CalculatMark counter){ 

} 

当你创建一个新的JFrame,通过在参考相同CalculatMark对象。

基本上,只是传递一个参考这个单CalculateMark对象,你应该是好的。 我没有你的代码,所以我不确定你会怎么做,但它不应该太难。

+0

是否有可能以显示它的任何实例。 ..对不起..我知道如何实例化,但我在哪里实例化并保持参考?在此先感谢 – BrownSugar 2014-11-25 04:21:22

+0

@BrownSugar我必须解决我的答案。在我做之前,你现在是否继承JFrame? – yts 2014-11-25 04:23:24

+0

我的jframes被一个接一个地从下一个按钮调用执行。 – BrownSugar 2014-11-25 04:27:36