我试图通过制作一个方法来制作按钮变得更容易,但是当我使用该方法制作按钮时,按下按钮时没有任何反应,即使我有一个按钮的监听器
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();
}
}
答案 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));
添加它。