通过按钮重新绘制框架/标签

时间:2011-11-07 01:25:15

标签: java swing jbutton repaint

我的问题似乎很简单,但几个月来我一直坚持下去;现在这是一项任务要求,从现在起两天后,我不得不放弃并寻求帮助。

基本上,我有一个int变量(此处称为Score),以及一个更改此变量值的按钮;这很有效。但我也有一个显示分数的现值,我希望它改变来代表价值。但是,它保持在0,并且根本不会改变。

我已经使一段代码尽可能简单(实际项目有大约15个文件),其中包括这个问题:一个显示Score值的按钮,并递增它。如果有人能给我一个关于如何让显示值与变量值相同的解决方案,那就太好了:)

import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;

public class Main extends JFrame {
public static void main (String [] args) {
new Main();
}

public Main () {
setLocation (100, 100);
setSize (200, 200);
setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE);
Container content = getContentPane();
content.add (new CrisButton ());
setVisible (true);
}

public class CrisButton extends JButton implements ActionListener{

    public int Score;
    CrisButton(){
        setText(""+Score);
        addActionListener(this);
    }

    public void actionPerformed(ActionEvent e){
        System.out.println("Score="+Score);
        Score=Score+2;
        this.repaint();
    }
}

}

2 个答案:

答案 0 :(得分:2)

您必须使用this.setText(“”+ Score);

分数不作为指针,因此值永远不会改变。 每次都必须传入一个全新的字符串。

答案 1 :(得分:2)

您的假设是,由于JButton的文本是使用Score变量创建的(应该以小写字母开头并命名为“score”以符合批准的Java命名约定),因此更改分数值会改变JButton的文本的价值,但这不会发生。您需要通过setText自行设置JButton的文本以更改其文本。