按下JButton时增加一个值

时间:2013-12-24 09:28:00

标签: java swing events awt jbutton

我一直在努力学习java大约一个星期但我一直坚持一个bug。这应该是每次按下按钮时将变量“click”增加1,但我一直得到同样的错误:

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


public class Testclass {

    private JFrame frame;
    private JPanel panel;
    private JButton button1;
    private JLabel label;


    public Testclass () {

        gui();

    }

    public void gui () { 

        final int clicks = 0;

        frame = new JFrame("Test");
        frame.setVisible(true);
        frame.setSize(600,400);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        panel = new JPanel();
        panel.setBackground(Color.cyan);

        button1 = new JButton("Test");
        label = new JLabel("Button Click Count: ");

        button1.addActionListener(new ActionListener() {

            public void actionPerformed(ActionEvent e) {

                clicks++;
                label.setText("Click Count: " +clicks);

            }


        });

        panel.add(label);
        panel.add(button1);

        frame.add(panel);



    }

    public static void main (String[] args) {

        new Testclass();


    }

}

它一直在第42行给我一个错误,其中“点击”增加“此行的多个标记” 任何帮助表示赞赏。谢谢,杰克

4 个答案:

答案 0 :(得分:3)

  final int clicks = 0;

clicks作为实例成员。 Nowit是最后的,你不能增加它。

如果您在当前位置删除了final,则无法在actionPerformed内访问,所以请将其作为实例成员。

public class Testclass {

   private int clicks = 0;

答案 1 :(得分:1)

clicks声明为实例变量,因为您无法更改final变量。

详细了解varibles in javafinal modifier

答案 2 :(得分:1)

final是声明变量是常量的声明。

您必须删除final并设置publicprivate。默认情况下,如果您没有设置任何内容,则为private。此外,您必须将其声明为类的成员。

默认情况下,eclipse建议您将变量声明为final,但很多时候都是错误的。

答案 3 :(得分:0)

final int clicks = 0

无法更改最终变量值,因此请将变量设为publicprivate 它取决于你的需要

private int clicks =0