1
我正在研究Java上的登錄系統程序。比較JPasswordfield和JTextField在IF語句中繼續去else語句
每次我記下用戶和密碼,然後按登錄,它總是朝着else語句。我確實將passwordfield
變成了一個字符串,但它仍然不起作用。
下面的代碼:
public static void main(String[] args)
{
JFrame frame = new JFrame("Login");
frame.setLayout(new BorderLayout());
frame.add(panelC(), BorderLayout.CENTER);
frame.add(panelN(), BorderLayout.NORTH);
//frame.add(panelW(), BorderLayout.WEST);
//frame.add(panelE(), BorderLayout.EAST);
frame.add(panelS(), BorderLayout.SOUTH);
frame.setVisible(true);
frame.pack();
}
public static JPanel panelC()
{
JPanel panel = new JPanel();
label1 = new JLabel("Username");
label2 = new JLabel("Password");
field1 = new JTextField(10);
pass = new JPasswordField(10);
panel.add(label1);
panel.add(field1);
panel.add(label2);
panel.add(pass);
return panel;
}
public static JPanel panelN()
{
JPanel panel = new JPanel();
panel.setPreferredSize(new Dimension(0,25));
return panel;
}
public static JPanel panelS()
{
JPanel panel = new JPanel();
panel.setLayout(new GridLayout(0,5));
button1 = new JButton("Login");
JLabel test = new JLabel();
JLabel test2 = new JLabel();
JLabel test3 = new JLabel();
JLabel test4 = new JLabel();
panel.add(test);
panel.add(test2);
panel.add(test3);
panel.add(test4);
panel.add(button1);
char[] p = pass.getPassword();
button1.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent f)
{
try
{
Scanner scan = new Scanner (new File("Logins.txt"));
String user = scan.nextLine();
String pass = scan.nextLine();
String inPass = new String(p);
String inUser = field1.getText();
while (scan.hasNextLine())
{
if (inUser.equals(user) && inPass.equals(pass))
{
System.out.println("Granted");
break;
}
else
{
user = scan.nextLine();
pass = scan.nextLine();
}
}
}
catch (Exception e)
{
e.printStackTrace();
}
}
});
return panel;
}
}
非常感謝您對我的糟糕編碼感到抱歉,我仍然在Java的學習過程中。我正在改進我能做的事情,並希望它能起作用。如果閱讀你的評論的權利,你告訴我,我應該把InPass和InUser放入Actionlistener,是的,我做過這個之前,但是當我編譯它時,它仍然朝着else語句:(。 –
@DannyNguyen:請顯示您的更新代碼 –
對不起,我還是很新的,但是當我嘗試在代碼中粘貼時間過長,有沒有更好的方法? –