java addActionListener 不工作

java addActionListener not working

我试图通过创建一个方法来简化按钮的制作,但是当我使用该方法制作按钮时,即使我有按钮的侦听器,按下按钮时也没有任何反应

public void assignButton(Button wtf,String text) //program to assign buttons easily
{
    wtf = new Button(text);
    add(wtf);
    wtf.addActionListener(this);
}

我使用 assignButton(Check,"words");制作按钮

public void actionPerformed(ActionEvent event) //checks if button has been pressed
{

    if(event.getSource() == Check)
    {
        code ++;
    }
    else
    {
        code = 2;
    }
   repaint();

每次我按下按钮时它都会将代码设置为 2,有人知道我做错了什么吗?

编辑:

完整代码

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

public class PressSafeTemp extends Applet implements ActionListener
{
Button clear,Check;
int code = 0;
public void init() //assigns buttons
{
    clear = new Button("C");
    add(clear);
    clear.addActionListener(this);
    assignButton(Check,"words");
}

public void paint(Graphics g)
{
    g.drawString(""+code,10,10);
}

public void assignButton(Button wtf,String text) //program to assign buttons easily
{
    wtf = new Button(text);
    add(wtf);
    wtf.addActionListener(this);
}

public void actionPerformed(ActionEvent event) //checks if button has been pressed
{

    if(event.getSource() == Check)
    {
        code ++;
    }
    else if(event.getSource() == clear)
    {
        code = 0;
    }
    else
    {
        code = 2;
    }
   repaint();
}
}

我不确定对您来说意味着什么 event.getSource() == Check 但这很关键,您需要根据您的情况检查正确的比较。例如:

event.getSource().class.equals(JCheckBox.class)

问题是您将 Check 传递给方法(作为 wtf),但随后立即将其设置为新实例;此实例 不是 Check。它确实被添加了,但是你不能用 Check 得到它。

你可能想做...

Button getButton(String text) {
    Button button = new Button(text);
    button.addActionListener(this);
    return button;
}

然后是 Check = getButton(someText); 然后是 add(Check);.

如果您实际上不需要 Check,您也可以直接使用 add(getButton(someText)); 添加它。