Java Eclipse - счетчик кликов - не увеличивается - PullRequest
0 голосов
/ 23 июня 2011

Очень просто, так как я новичок в Java Eclipse. Использование Eclipse IDE для разработчиков Java Версия: Helios Service Release 2. Создана кнопка и метка. Использование этой кнопки увеличивает значение на 1 за раз, но ничего не происходит. Не уверен, почему его нет. Пожалуйста, можете кто-нибудь взглянуть на. Я не думаю, что я слишком далеко, тогда я снова могу. Заранее спасибо ...

 import java.awt.event.ActionEvent;
 import java.awt.event.ActionListener;
 import javax.swing.*;

   public class First 
   {
       //int counter = 0; //  tried it here -> unsuccesfull
       // static int counter = 0; //  tried it here -> unsuccesfull

      public static void main (String [] args){
      JFrame frame = new JFrame("att");
      frame.setVisible(true);
  frame.setSize(500,500);
  frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

      JPanel panel = new JPanel();
  frame.add(panel);

      JButton button = new  JButton("+");
      frame.add(panel);
  panel.add(button);

      JLabel label = new JLabel("1");
  frame.add(panel);
  panel.add(label);

      // int counter = 0; // tried it here -> unsuccesfull

      // final int counter = 0; // tried it here -> unsuccesfull. Getting error
      // "The final local variable counter cannot be assigned, since it is 
      // defined in an enclosing type" *

      button1.addActionListener(new ActionListener() 
      {
        public void actionPerformed(ActionEvent arg0) 
    {
          label1.setVisible(true);
      int counter = 0;
      counter = counter + 1 ; // *
    }
 }
);

Изменил код и поместил переменную int после объявления класса и сразу после button1.addActionListener (новый заголовок метода ActionListener () и безуспешно

Ответы [ 3 ]

1 голос
/ 23 июня 2011

Вы устанавливаете на 0 counter каждый раз, когда нажимается кнопка.

Если вы хотите отслеживать количество нажатий кнопки, то вы хотите объявить переменную из слушателя.В противном случае, каждый раз, когда вы нажимаете кнопку counter, она всегда будет объявляться и иметь значение 0. Следовательно, она не будет увеличиваться так, как вы ожидаете.

Вы должны попробовать что-то вроде этого:

  static int counter = 0; 

  public static void main (String [] args){
  JFrame frame = new JFrame("att");
  frame.setVisible(true);
  frame.setSize(500,500);
  frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

  JPanel panel = new JPanel();
  frame.add(panel);

  JButton button1 = new  JButton("+");
  frame.add(panel);
  panel.add(button1);

  final JLabel label1 = new JLabel("0");
  frame.add(panel);
  panel.add(label1);

  button1.addActionListener(new ActionListener() 
 {
  public void actionPerformed(ActionEvent arg0) 
 {
      label1.setVisible(true);         
      counter += 1 ; // *
      label1.setText(String.valueOf(counter));
 }
 }
 );
0 голосов
/ 23 июня 2011

Возможно, я ошибаюсь, но ваша переменная-счетчик всегда будет равна 1, поскольку она была инициализирована непосредственно перед операцией увеличения.

Переместите свою инициализацию так:

public class First {
    int counter = 0;

и пусть counter = counter + 1 останется там, где сейчас

0 голосов
/ 23 июня 2011

Посмотрите на этот фрагмент вашего кода:

public void actionPerformed(ActionEvent arg0) 
    {
          label1.setVisible(true);
      int counter = 0; // you are setting variable to 0
      counter = counter + 1 ;
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...