2014-09-25 2 views
0

Моя программа проверяет правильность введенного вами пароля. Если пароль правильный, переходите к следующему окну. Если он не соответствует паролю, он должен вернуться к экрану входа в систему. Моя проблема в том, что я не могу вернуться на экран входа в систему, и мне будет очень нужна помощь. Как сделать мой экран Войти является входом Int и там я УчётнаяКак войти на Java

package scanlogin; 

//Imports are listed in full to show what's being used 
//could just import javax.swing.* and java.awt.* etc.. 
import javax.swing.JFrame; 
import javax.swing.JOptionPane; 
import javax.swing.JTextField; 
import javax.swing.JPasswordField; 
import javax.swing.JPanel; 
import javax.swing.JLabel; 
import java.awt.GridLayout; 
import java.util.Arrays; 
import java.awt.EventQueue; 


public class ScanScreen { 

    //Note: Typically the main method will be in a 
    //separate class. As this is a simple one class 
    //example it's all in the one class. 
    public static void main(String[] args) { 

     //Use the event dispatch thread for Swing components 
     EventQueue.invokeLater(new Runnable(){ 
      public void run(){ 
       createGuiFrame();   
      } 
     });  
    } 

    //handles the creation of the JFrame and 
    //all it's components 
    private static void createGuiFrame(){ 
     JFrame guiFrame = new JFrame(); 
     //make sure the program exits when the frame closes 
     guiFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     guiFrame.setTitle("Logging Information"); 
     guiFrame.setSize(1000,600); 

     //This will center the JFrame in the middle of the screen 
     guiFrame.setLocationRelativeTo(null); 
     guiFrame.setVisible(true); 

     //Using a JPanel as the message for the JOptionPane 
     JPanel userPanel = new JPanel(); 
     userPanel.setLayout(new GridLayout(2,2)); 

     JLabel usernameLbl = new JLabel("Username:"); 
     JLabel passwordLbl = new JLabel("Password:"); 
     JTextField username = new JTextField(); 
     JPasswordField passwordFld = new JPasswordField(); 

     userPanel.add(usernameLbl); 
     userPanel.add(username); 
     userPanel.add(passwordLbl); 
     userPanel.add(passwordFld); 

     //As the JOptionPane accepts an object as the message 
     //it allows us to use any component we like - in this case 
     //a JPanel containing the dialog components we want 
     int input = JOptionPane.showConfirmDialog(guiFrame, userPanel, "Login Page",JOptionPane.OK_CANCEL_OPTION, JOptionPane.PLAIN_MESSAGE); 

     char[] correctPassword = {'R','a','T'}; 
     // Retrieve password 
     char[] enteredPassword = passwordFld.getPassword(); 

     if (input == 0){ //OK Button = 0 
      if (Arrays.equals(correctPassword, enteredPassword)){ 
       JOptionPane.showMessageDialog(null, "Password is correct!"); 
      }else{ 
       JOptionPane.showMessageDialog(null, "Invalid username or password!"); 
      } 

      //Note: best practice is to zero out the array 
      //that contains the password. (Bit silly here 
      //as I'm printing the password to show how it's retrived 
      //but keep it in mind when using JPasswordFields.) 
      Arrays.fill(enteredPassword, '0'); 
     }else{ 
      //either the cancel button or the 'x' 
      //has been pressed 
      System.exit(0); 
     } 
    } 
} 

ответ

1

Это просто своего рода пример того, как сделать это. В моем случае я буду более сложным (т. Е. Вам необходимо подтвердить дополнительные поля и т. Д.), Но основная концепция остается

String CORRECT_PASSWORD = ...; do { String pwd = JOptionPane.showInputDialog("Enter Password"); } while (!pwd.equals(CORRECT_PASSWORD));

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