2016-02-01 2 views
0

Я пытаюсь сделать апплет, который будет считать, сколько раз вы нажали кнопку, но, похоже, 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(); 
      } 
     } 
    } 
} 
+4

Вы сравниваете объект _String_ с объектом _Button_: _sString.equals (Upgrade) _ – Berger

+0

@Berger Я также попытался ae.getSource() == Clicker & ae.getSource() = Upgrade, но Didn Не работай. Как мне сравнить это с помощью кнопки? –

+1

'ae, getSource() == Clicker' не работает, так как вы никогда не инициализируете поле' Clicker'! Вместо того, чтобы назначать кнопку в поле, вы создаете новую локальную переменную 'Clicker' –

ответ

2

Установите команду действий на кнопки:

Button Clicker = new Button("Click"); 
Clicker.setActionCommand("Click"); 

Затем использовать, чтобы определить, что была нажата:

if (sString.equals("Click")) 

ИЛИ

Сравнить кнопку источника:

if(ae.getSource() == Clicker) 
+0

Спасибо, что сработало! –

Смежные вопросы