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:请显示您的更新代码 –
对不起,我还是很新的,但是当我尝试在代码中粘贴时间过长,有没有更好的方法? –