Java JLabel不会显示Getter的正确值
在我的项目中,我的问题是JLabel不会显示getter中递增的值。每次我选择正确的单选按钮,它都应该加起来 这是第一个JFrameJava 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
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感谢您的提醒:-