在我的项目中,我的问题是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);
}
这是第二个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);
}
这是第3个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 and 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;
}
}
答案 0 :(得分:1)
(基于RubioRic和MadProgrammer的评论)
代码有两个问题:
ScoreStorage
中的Setter无法正常工作:您在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);
}