На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! Следующие правила действуют в данном разделе в дополнение к общим Правилам Форума
1. Здесь обсуждается Java, а не JavaScript! Огромная просьба, по вопросам, связанным с JavaScript, SSI и им подобным обращаться в раздел WWW Masters или, на крайний случай, в Многошум.
2. В случае, если у вас возникают сомнения, в каком разделе следует задать свой вопрос, помещайте его в корневую ветку форума Java. В случае необходимости, он будет перемещен модераторами (с сохранением ссылки в корневом разделе).

3. Запрещается создавать темы с просьбой выполнить какую-то работу за автора темы. Форум является средством общения и общего поиска решения. Вашу работу за Вас никто выполнять не будет.
4. Не рекомендуется создавать несколько несвязанных вопросов в одной теме. Пожалуйста, создавайте по одной теме на вопрос.
Модераторы: dark_barker, wind
  
> Подскажите новичку по ArrayList , ArrayList и actionPerformed
    В общем такая проблема. Выдает ошибку java.lang.NullPointerException, при использовании любого метода связанного с коллекцией ArrayList из actionPerformed. При чем из main или конструктора методы работают нормально, а вот по кнопке - java.lang.NullPointerException.

    ExpandedWrap disabled
      import java.util.ArrayList;
      import java.util.Iterator;
      import java.awt.event.ActionEvent;
      import java.awt.event.ActionListener;
       
      import javax.swing.*;
      import javax.swing.border.EmptyBorder;
       
      public class VotingSystem extends JFrame implements ActionListener{
          private ArrayList users;
          private User currentUser;
          
          JTextField loginField;
          JTextField passwordField;
       
          JButton ok;
          JButton reg;
          
          
          VotingSystem(){
              super("Вход в систему");
              
              ArrayList users = new ArrayList();
              users.add(new Admin("admin", "admin"));
              users.add(new Elector("v", "v"));
              
              
              setDefaultCloseOperation(EXIT_ON_CLOSE);
              // Настраиваем первую горизонтальную панель (для ввода логина)
              Box box1 = Box.createHorizontalBox();
              JLabel loginLabel = new JLabel("Логин:");
              loginField = new JTextField(15);
              box1.add(loginLabel);
              box1.add(Box.createHorizontalStrut(6));
              box1.add(loginField);
              
              // Настраиваем вторую горизонтальную панель (для ввода пароля)
              Box box2 = Box.createHorizontalBox();
              JLabel passwordLabel = new JLabel("Пароль:");
              passwordField = new JTextField(15);
              box2.add(passwordLabel);
              box2.add(Box.createHorizontalStrut(6));
              box2.add(passwordField);
       
              // Настраиваем третью горизонтальную панель (с кнопками)
              Box box3 = Box.createHorizontalBox();
              JButton ok = new JButton("OK");
              JButton reg = new JButton("Регистрация");
              ok.addActionListener(this);
              reg.addActionListener(this);
       
       
              box3.add(Box.createHorizontalGlue());
              box3.add(ok);
              box3.add(Box.createHorizontalStrut(12));
              box3.add(reg);
       
              // Уточняем размеры компонентов
              loginLabel.setPreferredSize(passwordLabel.getPreferredSize());
       
              // Размещаем три горизонтальные панели на одной вертикальной
              Box mainBox = Box.createVerticalBox();
              mainBox.setBorder(new EmptyBorder(12,12,12,12));
              mainBox.add(box1);
              mainBox.add(Box.createVerticalStrut(12));
              mainBox.add(box2);
              mainBox.add(Box.createVerticalStrut(17));
              mainBox.add(box3);
              setContentPane(mainBox);
              pack();
              setResizable(false);
              setVisible(true);
              }
       
          public static void main(String[] args) {
              //создаем экземпляр класса окна авторизации
              VotingSystem sys = new VotingSystem();
              
              
          }
          private void addUser(String login,String password,ArrayList us){
              String log=login;
              String pass=password;
              
              us.add(new Elector(log,pass));
          }
          private void findUser(String login,String password,ArrayList us){
              String log=login;
              String pass=password;
              Iterator iter = us.iterator();
              while (iter.hasNext()) {
                  User user = (User) iter.next();
                  System.out.println(user.getName());
                  if(user.enter(log, pass)){
                      
                      if(user instanceof Admin){
                          currentUser = (Admin)user;
                      }
                      else{
                          currentUser = (Elector)user;
                      }
                  }
                  }
              if(currentUser==null){
                  JOptionPane.showConfirmDialog(null, "Не верный логин или пароль",
                          "Доступ запрещен",JOptionPane.DEFAULT_OPTION);
              }
              else{
                  String name=currentUser.getName();
                  JOptionPane.showConfirmDialog(null, "Добро пожаловать, "+name,
                          "Доступ разрешен",JOptionPane.DEFAULT_OPTION);
                  setVisible(false);
              }
          }
          private void save(){}
          private void load(){}
       
          public void actionPerformed(ActionEvent e) {
                  
                  if(e.getActionCommand().equals("OK")){
                      
                      findUser(loginField.getText(),passwordField.getText(),users);//здесь выдает ошибку
                  }
          }
          
       
      }
      На строке 23 Вы инициализируете локальную переменную вместо поля -- вот её и не видно из обработчика события.
        kopilovО! Точно. Спасибо. Глупая ошибка.
        0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
        0 пользователей:


        Рейтинг@Mail.ru
        [ Script execution time: 0,0285 ]   [ 16 queries used ]   [ Generated: 26.04.24, 12:29 GMT ]