Java JLabel不会显示Getter的正确值

Java JLabel不会显示Getter的正确值,java,Java,在我的项目中,我的问题是JLabel不会显示getter中递增的值。每次我选择正确的单选按钮,它都应该加起来 这是第一个JFrame public class DifEasy extends javax.swing.JFrame { private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) { // jPanel1.setVisible(false); if (q1a1.is

在我的项目中,我的问题是JLabel不会显示getter中递增的值。每次我选择正确的单选按钮,它都应该加起来

这是第一个JFrame

public class DifEasy extends javax.swing.JFrame {

    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {

//        jPanel1.setVisible(false);
        if (q1a1.isSelected()){
            ScoreStorage mehh = new ScoreStorage();
            mehh.setRawscore(mehh.getRawscore()+1);

        }
        this.setVisible(false);
        new DifEasy1().setVisible(true);
    } 
这是第二帧

public class DifEasy1 extends javax.swing.JFrame {
    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
        if (q1a1.isSelected()){
            ScoreStorage mehh = new ScoreStorage();          
            mehh.setRawscore(mehh.getRawscore()+1);

        }
        this.setVisible(false);
        new DifEasy2().setVisible(true);
    }
这是第三帧

    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
        if (q1a1.isSelected()){
            ScoreStorage mehh = new ScoreStorage();          
            mehh.setRawscore(mehh.getRawscore()+1);
            jLabel1.setText(String.valueOf(mehh.getRawscore()));
        }
    }  
顺便说一句,我刚刚放了一个JLabel在那里进行测试。如果我选择了q1a1单选按钮,单击JButton之后,JLabel应该变成3,但它只显示0

getter和setter类

public class ScoreStorage {

    private int Rawscore = 0;

    public void setRawscore(int rawscore){
        this.Rawscore = Rawscore;
    }

    public int getRawscore(){
        return Rawscore;
    }

    public synchronized void increment(){
        setRawscore(Rawscore);
    }

    public int reset(){
        Rawscore = 0;
        return Rawscore;
    }
}
根据和的评论

该守则有两个问题:

记分存储中的Setter不工作:
您在ScoreStorage.setRawscore中有一个输入错误,您正在分配此。Rawscore=Raswcore而不是此。Rawscore=Rawscore,因此Rawscore的值始终为0

还要注意的是,ScoreStorage.increment可能不会执行它应该执行的操作,因为它只会重新分配值

您可以创建多个存储对象。
每次选择一个选项时,您都会创建一个全新的ScoreStorage实例,并将其初始化为0

您可以实现一个方法setCoreStorage,或者创建一个在JFrames中接受该参数的构造函数

下面是一个简短的示例,说明如何使用构造函数在不同的JFrame之间传递一个ScoreStorage

public class DifEasy extends JFrame {
    private ScoreStorage scoreStorage;

    public DifEasy(ScoreStorage scoreStorage) {
        this.scoreStorage = scoreStorage;
    }

    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
        if (q1a1.isSelected()){
            scoreStorage.setRawscore(scoreStorage.getRawscore()+1);
        }
        this.setVisible(false);
        new DifEasy1(scoreStorage).setVisible(true);
    } 

您在ScoreStorage.setRawscore中有一个输入错误,您正在分配这个.Rawscore=Raswcore,而不是这个.Rawscore=Rawscore。这可能是你的问题所在。成员Rawscore始终为0。每次选择一个选项时,您都在创建一个全新的ScoreStorage实例,该实例初始化为0,然后向其中添加1。。。但正如已经指出的。。。您没有指定正确的值-因此总是0我不鼓励使用这样的多个帧,而是鼓励使用CardLayout,不过,尽管如此,ScoreStorage的单个实例应该传递给需要的每个类it@MadProgrammer我更改了this.Rawscore,但它的值仍然为1:我如何才能向每个类声明ScoreStorage的单个实例?@Katsueki感谢您的提醒:-