My program checks and makes sure that the password that you types in is correct. If the password is correct, then you go on to the next window. If it does not match the password, then it is supposed to go back to login screen. My issue is I cannot go back to the login screen and I would love some help. How I make my login screen is with an int input and in there I have login info
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);
}
}
}
This is just sort of an example of how to do it. Your case my be more complex (ie you need to confirm additional fields, etc) but the fundamental concept remains
String CORRECT_PASSWORD = ...;
do {
String pwd = JOptionPane.showInputDialog("Enter Password");
} while (!pwd.equals(CORRECT_PASSWORD));