2013-11-26 2 views
1

Я пытаюсь реализовать форму регистрации в Java. Моя основная рама состоит из 3 кнопок: Войдите, зарегистрируйтесь, разместите заказ, который у меня есть setEnabled(false). Если пользователь хочет войти (значит, он уже владеет учетной записью), и он дает правильный id и psw, я хочу, чтобы рамка входа скрывалась, и мой основной кадр появлялся с кнопкой «Разместить заказ», включенным на этот раз. Это моя первая проблема. Моя вторая проблема заключается в регистрации. Я не могу сохранить вход пользователя в ArrayList<User>.Не могу сохранить мои JtextFields в arraylist

MainFrame.java:

public class MainFrame extends JFrame { 

private JButton loginButton; 
private JButton signUpButton; 
JButton placeOrderButton; 

private boolean q; 

private UserManager userManager; 

public MainFrame(){ 
    super("Main Panel"); 
    userManager = new UserManager(); 
    loginButton = new JButton("Login"); 
    loginButton.addActionListener(new LoginButtonListener()); 
    placeOrderButton = new JButton("Place Order"); 
    placeOrderButton.addActionListener(new PlaceOrderButtonListener()); 
    placeOrderButton.setEnabled(false); 



    signUpButton = new JButton("Sign Up"); 
    signUpButton.addActionListener(new SignUpButtonListener()); 



    this.getContentPane().add(loginButton, BorderLayout.LINE_START); 
    this.getContentPane().add(signUpButton, BorderLayout.CENTER); 
    this.getContentPane().add(placeOrderButton, BorderLayout.LINE_END); 
    this.pack(); 
    this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    this.setVisible(true); 






} 

class LoginButtonListener implements ActionListener{ 

    @Override 

    public void actionPerformed(ActionEvent arg0) { 
     new LoginFrame(userManager); 

    } 
} 

class SignUpButtonListener implements ActionListener{ 

    @Override 
    public void actionPerformed(ActionEvent arg0) { 
     new SignUpFrame(userManager); 

    } 
} 


class PlaceOrderButtonListener implements ActionListener { 

    public void actionPerformed(ActionEvent argO){ 



    } 


} 

User.java:

public class User { 

private String fullName; 
private String email; 
private String userID; 
private String password; 

public User(String fullName, String email, String userID, String password) { 
    this.fullName = fullName; 
    this.email = email; 
    this.userID = userID; 
    this.password = password; 
} 

public String getFullName() { 
    return fullName; 
} 
public void setFullName(String fullName) { 
    this.fullName = fullName; 
} 
public String getEmail() { 
    return email; 
} 
public void setEmail(String email) { 
    this.email = email; 
} 
public String getUserID() { 
    return userID; 
} 
public void setUserID(String userID) { 
    this.userID = userID; 
} 
public String getPassword() { 
    return password; 
} 
public void setPassword(String password) { 
    this.password = password; 
} 

LoginFrame.java:

public class LoginFrame extends JFrame{ 

    private JButton loginButton; 
    private JTextField usernameField; 
    private JPasswordField password; 

    private UserManager userManager; 

    public LoginFrame(UserManager userManager){ 
     super("Enter your credentials to login"); 
     this.userManager = userManager; 
     loginButton = new JButton("Login"); 
     loginButton.addActionListener(new LoginButtonListener()); 

     usernameField = new JTextField(15); 
     password = new JPasswordField(15); 

     JPanel mainPanel = new JPanel(); 
     mainPanel.setLayout(new GridLayout(3,2)); 

     mainPanel.add(new JLabel("Username:")); 
     mainPanel.add(usernameField); 
     mainPanel.add(new JLabel("Password:")); 
     mainPanel.add(password); 
     mainPanel.add(loginButton); 

     this.setContentPane(mainPanel); 
     this.pack(); 
     this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     this.setVisible(true); 
    }   
     class LoginButtonListener implements ActionListener{ 


public void actionPerformed(ActionEvent arg0) { 
    String givenID = usernameField.getText(); 



    if(userManager.isUserInList(givenID)){ 
     String givenPass = password.getText(); 
     User theUser = userManager.getUserWithID(givenID); 
     if(givenPass.equals(theUser.getPassword())){ 
      JOptionPane.showMessageDialog(null, "Access granted!"); 

     dispose(); 

     new MainFrame(); 
     } 


     else{ 
      JOptionPane.showMessageDialog(null, 
          "Wrong Password", 
          "Error!", 
          JOptionPane.ERROR_MESSAGE); 
     } 
    } 
    else{ 
     JOptionPane.showMessageDialog(null, 
       "Wrong username", 
       "Error!", 
       JOptionPane.ERROR_MESSAGE); 
    } 
} 

} 

SignUpFrame.java:

public class SignUpFrame extends JFrame{ 

private JButton signupButton; 
private JTextField name; 
private JTextField email; 
private JTextField username; 
private JPasswordField pass; 

private UserManager userManager; 

public SignUpFrame (UserManager userManager){ 
super("Please fill in your Data"); 

userManager = new UserManager(); 

signupButton = new JButton("Sign Up!"); 
signupButton.addActionListener(new signupButtonListener()); 

JTextField name = new JTextField(15); 

JTextField email = new JTextField(15); 

JTextField username = new JTextField(15); 

JTextField pass = new JTextField(15); 



JPanel mainPanel = new JPanel(); 

mainPanel.setLayout(new GridLayout(5,2)); 

mainPanel.add(new JLabel("Name:")); 
mainPanel.add(name); 
mainPanel.add(new JLabel("Email:")); 
mainPanel.add(email); 
mainPanel.add(new JLabel("Username")); 
mainPanel.add(username); 
mainPanel.add(new JLabel("Password:")); 
mainPanel.add(pass); 
mainPanel.add(signupButton); 

this.setContentPane(mainPanel); 
this.pack(); 
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
this.setVisible(true); 


class signupButtonListener implements ActionListener{ 

public void actionPerformed(ActionEvent arg0) { 



    User u2 = new User(name.getText(),email.getText(),username.getText(),pass.getText()); 



    add(u2); 

} 
} 

import java.util.ArrayList;

общественного класса UserManager {

private ArrayList<User> userList; 

public UserManager(){ 
    userList = new ArrayList<User>(); 
    User u1 = new User("Teo Haik", "[email protected]","teohaik","teopass"); 
    userList.add(u1); 
} 

public boolean isUserInList(String ID){ 
    for(User u: userList){ 
     if(u.getUserID().equals(ID)){ 
      return true; 
     } 
    } 
    return false; 
} 

public User getUserWithID(String ID){ 
    for(User u: userList){ 
     if(u.getUserID().equals(ID)){ 
      return u; 
     } 
    } 
    return null; 
} 
+0

Опубликуйте попробовал код пожалуйста. – MouseLearnJava

+0

Опубликовать http://sscce.org/ для получения быстрой помощи – vels4j

+0

Можете ли вы показать нам некоторые из вашего кода? У вас есть проблема с хранением данных? или получить данные из полей? В чем проблема: * я не могу сохранить вход пользователей в arraylist * .. почему? Причина? измените свой вопрос, чтобы мы могли обеспечить лучший ответ. GetText из ваших полей помещает его в один разделитель строк и помещает эти данные в arraylist shoud не будет проблемой –

ответ

0

Из кода размещен выше, вы не добавлении нового пользователя в UserManager. Ваша строка add(u2); в signupButtonListener пытается добавить пользователя в кадр, а не в UserManager. Фактически, единственным кодом, который добавляет пользователя в ArrayList, является то, что жестко закодировано в конструкторе UserManager.

Вам необходимо добавить метод UserManager, который принимает пользователя как параметр и добавляет его в ArrayList, если он еще не существует (вам также может понадобиться метод, который удаляет данного пользователя, если он уже в ArrayList). Затем, после регистрации пользователя, вызовите этот метод для добавления пользователя.

+0

я реализовал этот метод на UserManager: общественности недействительного AddUser (Пользователь р) \t \t если (! userList.contains (р)) \t \t \t userList.add (р); \t \t и в signupButtonListener я написал: userList.addUser (u1), но он говорит мне USERLIST не может быть решена ... – CurrentLer

+0

Класс signupButtonListener не экземпляр USERLIST - и это тоже не следует , Вы должны использовать существующий метод addUser() UserManager для всех пользователей. Вероятно, вы захотите найти Википедию для шаблона singleton, который будет использоваться в вашем классе UserManager. –

0

1) Для кнопки PlaceOrder:


. A) Измените его как статичное; для доступа к нему из класса loginFrame.

. B) изменить метод actionPerformed в классе loginButtonListener следующим образом:

 public void actionPerformed(ActionEvent arg0) { 

     String givenID = usernameField.getText(); 
     if(userManager.isUserInList(givenID)){ 
      String givenPass = password.getText(); 
      User theUser = userManager.getUserWithID(givenID); 
      if(givenPass.equals(theUser.getPassword())){ 
       JOptionPane.showMessageDialog(null, "Access granted!"); 
       dispose(); 
       MainFrame.placeOrderButton.setEnabled(true); //her we enable editing 
       // new MainFrame(); no need for that 
      }else{ 
      JOptionPane.showMessageDialog(null, "Wrong Password", "Error!", JOptionPane.ERROR_MESSAGE); 
      } 
     }else{ 
     JOptionPane.showMessageDialog(null, "Wrong username","Error!",JOptionPane.ERROR_MESSAGE); 
     } 
    } 

2) Для добавления пользователей в USERLIST (Array List):


. A) Измените его как статичное; для доступа к нему из класса SignUpFrame.

 static ArrayList<User> userList; 

.B) изменить класс SignUpFrame следующим образом:

 public class SignUpFrame extends JFrame{ 


      private JButton signupButton; 
      private JTextField name; 
      private JTextField email; 
      private JTextField username; 
      private JPasswordField pass; 

      //private UserManager userManager; no need for user manager 

      public SignUpFrame(){ 
       super("Please fill in your Data"); 

       //userManager = new UserManager(); no need for user manager 

       signupButton = new JButton("Sign Up!"); 
       signupButton.addActionListener(new signupButtonListener()); 


       // You were declaring them again ! 
       name = new JTextField(15); 

       email = new JTextField(15); 

       username = new JTextField(15); 

       pass = new JPasswordField(15); 



       JPanel mainPanel = new JPanel(); 

       mainPanel.setLayout(new GridLayout(5,2)); 

       mainPanel.add(new JLabel("Name:")); 
       mainPanel.add(name); 
       mainPanel.add(new JLabel("Email:")); 
       mainPanel.add(email); 
       mainPanel.add(new JLabel("Username")); 
       mainPanel.add(username); 
       mainPanel.add(new JLabel("Password:")); 
       mainPanel.add(pass); 
       mainPanel.add(signupButton); 

       this.setContentPane(mainPanel); 
       this.pack(); 
       this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
       this.setVisible(true); 

     } 
    class signupButtonListener implements ActionListener{ 
     public void actionPerformed(ActionEvent arg0) { 
      try{ 
       // Organizing for better readability 
       String newName = name.getText(); 
       String newEmail = email.getText(); 
       String newUserName = username.getText(); 
       String newPass = pass.getText(); 

       User u2 = new User(newName,newEmail,newUserName,newPass); 

       UserManager.userList.add(u2); 


      }catch(NullPointerException e){ 
      System.out.println("fill all fields"); 
      } 
       dispose(); //to close SignUpFrame 
    } 
} 
+0

было довольно круто: D – CurrentLer

+0

рад, что помог :), последняя строка обновлена, чтобы расположить рамку регистрации. – iShaalan

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