Я пытаюсь сделать апплет, который будет считать, сколько раз вы нажали кнопку, но, похоже, ActionListener работает неправильно. Этот код выглядит так, как будто он работает, но по какой-то причине, когда я нажимаю кнопку в апплете, ничего не печатается на консоли или не обновляется на интерфейсе, как должно.Java Actionlistener & getSource()
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();
}
}
}
}
Вы сравниваете объект _String_ с объектом _Button_: _sString.equals (Upgrade) _ – Berger
@Berger Я также попытался ae.getSource() == Clicker & ae.getSource() = Upgrade, но Didn Не работай. Как мне сравнить это с помощью кнопки? –
'ae, getSource() == Clicker' не работает, так как вы никогда не инициализируете поле' Clicker'! Вместо того, чтобы назначать кнопку в поле, вы создаете новую локальную переменную 'Clicker' –