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));
添加它。
我试图通过创建一个方法来简化按钮的制作,但是当我使用该方法制作按钮时,即使我有按钮的侦听器,按下按钮时也没有任何反应
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));
添加它。