Java 动作监听器和 getSource()

Java Actionlistener & getSource()

我正在尝试制作一个小程序来计算您单击按钮的次数,但 ActionListener 似乎无法正常工作。这段代码看起来可以正常工作,但由于某种原因,当我单击小程序中的按钮时,控制台中没有打印任何内容,也没有按应有的方式在界面上进行更新。

import java.applet.*;
import java.awt.*;
import java.awt.event.*;

public class Test extends Applet implements ActionListener
{
    Button Clicker;
    Button Upgrade;
    int currentClicks = 0;

    public void init()
    {
        this.setSize(600,400);

        Button Clicker = new Button("Click");
        add(Clicker);
        Clicker.addActionListener(this);

        Button Upgrade = new Button("Autoclick Upgrade");
        add(Upgrade);
        Upgrade.addActionListener(this);
    }
    public void paint (Graphics g)
    {
        g.drawString("Test",300,50);
        g.drawString(String.valueOf(currentClicks), 300, 100);
    }
    public void actionPerformed(ActionEvent ae) 
    {
        String sString = ae.getActionCommand();
        if (sString.equals(Clicker))
        {
            System.out.println("Clicker was pressed");
            currentClicks++;
            System.out.println("Total Clicks: "+currentClicks);
            repaint();
        }
        else if (sString.equals(Upgrade))
        {
            System.out.println("Upgrade was pressed");
            if (currentClicks >= 25)
            {
                System.out.println("Upgrade was successfully purchased!");
                currentClicks = currentClicks - 25;
                repaint();
            }
            else
            {
                System.out.println("Upgrade was not successfully purchased!");
                repaint();
            }
        }
    }
}

为按钮设置动作命令:

Button Clicker = new Button("Click");
Clicker.setActionCommand("Click");

然后用它来确定点击了什么:

if (sString.equals("Click"))

比较源按钮:

if(ae.getSource() == Clicker)