[英]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;
}
}
(基於RubioRic和MadProgrammer的評論)
該代碼有兩個問題:
ScoreStorage
中的設置器不起作用: 你有在ScoreStorage.setRawscore一個錯字,你要分配
this.Rawscore = Raswcore
而不是this.Rawscore = rawscore
因此價值Rawscore
始終為0。
(還請注意, ScoreStorage.increment()
可能沒有做應做的事情,因為它僅重新分配了值。)
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.