java addActionListener无效

时间:2016-03-21 23:16:18

标签: java swing awt

我试图通过制作一个方法来制作按钮变得更容易,但是当我使用该方法制作按钮时,按下按钮时没有任何反应,即使我有一个按钮的监听器

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

我使用assignButton(检查,“单词”);制作按钮

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();
}
}

2 个答案:

答案 0 :(得分:0)

我不确定你的意思是什么event.getSource() == Check,但这是关键,你需要在你的情况下检查正确的比较。例如:

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

答案 1 :(得分:0)

问题是你将Check传递给方法(如wtf),然后立即将其设置为新实例;此实例 not 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));添加它。