Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[18.117.9.186] |
|
Сообщ.
#1
,
|
|
|
В общем такая проблема. Выдает ошибку java.lang.NullPointerException, при использовании любого метода связанного с коллекцией ArrayList из actionPerformed. При чем из main или конструктора методы работают нормально, а вот по кнопке - java.lang.NullPointerException.
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);//здесь выдает ошибку } } } |
Сообщ.
#2
,
|
|
|
На строке 23 Вы инициализируете локальную переменную вместо поля -- вот её и не видно из обработчика события.
|
Сообщ.
#3
,
|
|
|
kopilovО! Точно. Спасибо. Глупая ошибка.
|