在我的项目中,我的问题是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
或创建在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);
}
关于java - JLabel不会显示Getter的正确值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49147922/