Я пытаюсь сделать логин GUI, который закрывается при вводе правильной комбинации имени пользователя и пароля. Когда я правильно ввожу их, это работает нормально, но если введена неправильная комбинация, l oop просто повторяет с теми же значениями "u" и "pw", мешая мне печатать что-нибудь еще.
Я попытался добавить logB.setSelected(false);
в конце времени l oop, но он все еще не позволяет мне вводить новые значения.
(Кстати, я знаю, что неверный пароль Метка отображается с самого начала, но я просто пытаюсь решить эту проблему прямо сейчас.Кроме того, класс Login начинался как CLI, так что в коде остались некоторые его остатки, но я просто хочу, чтобы он работал раньше Я убираю его.)
GUI класс:
import javax.swing.*;
import java.awt.event.*;
import java.io.*;
public class Login_GUI implements ActionListener {
private static JLabel userL;
private static JTextField userT;
private static JLabel pwL;
private static JPasswordField pwT;
private static JLabel respL;
private static JFrame f;
public static boolean authorized;
public static void GUIfunc(){
JPanel p = new JPanel();
f = new JFrame("RMT 1.0");
f.setSize(250, 225);
f.setLocation(1080,530);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setVisible(true);
f.add(p);
userL = new JLabel("Username:");
userL.setBounds(10,20,80,25);
p.add(userL);
userT = new JTextField(20);
userT.setBounds(100,20,165,25);
p.add(userT);
pwL = new JLabel("Password:");
pwL.setBounds(10,50,80,25);
p.add(pwL);
pwT = new JPasswordField(20);
pwT.setBounds(100,50,165,25);
p.add(pwT);
JButton logB = new JButton("Login");
logB.setBounds(10,80,80,25);
logB.addActionListener(new Login_GUI());
p.add(logB);
respL = new JLabel("Incorrect username or password.");
respL.setBounds(10,100,80,25);
respL.setEnabled(false);
p.add(respL);
}
@Override
public void actionPerformed(ActionEvent e){
while (authorized != true){
String u = userT.getText();
String pw = pwT.getText();
try {
authorized = Login2.loginfunc(u,pw);
}
catch(IOException exc){
exc.printStackTrace();
}
logB.setSelected(false);
}
f.dispatchEvent(new WindowEvent(f, WindowEvent.WINDOW_CLOSING));
}
}
Класс входа:
import java.util.*;
import java.io.*;
import java.nio.*;
class Login2{
public static boolean loginfunc(String u, String pw)throws IOException{
File users = new File("C:\\Users\\Marcell\\OneDrive\\Computer Science\\IA\\users.txt");
Scanner kb = new Scanner (System.in);
Scanner sc = new Scanner (users);
String token1 = "";
int numOfEmp = 3;
boolean authorized = false;
boolean repeat = true;
String temp[] = new String[numOfEmp];
for(int x=0;x<numOfEmp;x++){
token1 = sc.nextLine();
temp[x] = token1;
}
String full = u + "," + pw;
for (int x=0;x<numOfEmp;x++ ){
String pass = temp[x];
if (pass.equals(full)){
System.out.println("Login successful.");
authorized = true;
repeat = false;
}
}
if (repeat = false){
return(false);
}
return(authorized);
}
}
Спасибо за помощь заранее!