我的程序检查并确保您键入的密码正确无误。如果密码正确,则转到下一个窗口。如果它与密码不匹配,那么它应该返回登录屏幕。我的问题是我不能回到登录界面,我希望得到一些帮助。如何使我的登录屏幕使用int输入,并在那里我有登录信息
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);
}
}
}
答案 0 :(得分:1)
这只是一个如何做的例子。您的情况我会更复杂(即您需要确认其他字段等),但基本概念仍然存在
String CORRECT_PASSWORD = ...;
do {
String pwd = JOptionPane.showInputDialog("Enter Password");
} while (!pwd.equals(CORRECT_PASSWORD));