簡體   English   中英

JLabel不會顯示Getter的正確值

[英]JLabel won't show the proper value of Getter

在我的項目中,我的問題是JLabel不會顯示來自吸氣劑的增量值。 每當我選擇正確的單選按鈕時,它應該累加起來。

這是第一個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);
    } 

這是第二個JFrame

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

這是第三個JFrame

    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進行測試。 單擊JButton(鑒於我選擇了q1a1單選按鈕)后,JLabel應該更改為3,但它僅顯示0。

Getters和Setters類

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

(基於RubioRicMadProgrammer的評論)

該代碼有兩個問題:

  1. ScoreStorage中的設置器不起作用:

你有在ScoreStorage.setRawscore一個錯字,你要分配this.Rawscore = Raswcore而不是this.Rawscore = rawscore因此價值Rawscore始終為0。

(還請注意, ScoreStorage.increment()可能沒有做應做的事情,因為它僅重新分配了值。)

  1. 您創建ScoreStorage對象。

每次選擇一個選項時,您都將創建一個全新的ScoreStorage實例,該實例被初始化為0

您可以實現setScoreStorage方法或創建一個在setScoreStorage中接受該參數的構造函數。


這是一個簡短的示例,說明如何使用構造函數在不同的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);
    } 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM