저는 코딩이 새로 생겼습니다. 인덱스 파일이 있는지 (패스워드 있음) 먼저 검사하여 저렴하고 쉬운 로그인 코드를 얻는 데 노력하고 있습니다. 그렇다면 말하는 내용을 읽고 사용자 이름과 암호를 묻는 것입니다. 파일이 없거나 비어있는 경우 사용자는 두 필드가 사용 된 후 색인 파일에 기록하도록 사용자에게 알려야합니다.변수가 JTextField에서 데이터를 가져 오지 않습니다
그러나 내가 실행 한 문제는 두 필드를 파일에 쓰도록 코드를 실행하도록 설정 한 단추가 문자열에서 아무 것도 찾지 못하고 아무 것도 쓸 수 없다는 것입니다. . 나는 아래 코드를 포함하고 잊어 버린 것이 있다면 더 추가 할 수있다.
아래는 GUI 윈도우와 액션 리스너를위한 코드입니다.
public class Login {
private static String UserName; //true username
private static String Password; //true password
private static boolean accepted = false;
private static String user="";
private static String pass="";
private static boolean firstTime = true;
Login(){
}
public static void CreateLogin(String user, String pass) throws IOException{
UserName = user;
Password = pass;
try{
FileWriter FW = new FileWriter("Index.txt");
PrintWriter output = new PrintWriter(FW);
output.println(UserName);
output.println(Password);
output.close();
FW.close();
}
catch(IOException e){
e.printStackTrace();
}
}
public static void LogIn(){
try{
FileReader FR = new FileReader("Index.txt");
firstTime = false;
Scanner sc = new Scanner(FR);
user = sc.nextLine();
pass = sc.nextLine();
if(user.equalsIgnoreCase("")){
firstTime = true;
}
if(pass.equals("")){
firstTime = true;
}
}
catch(FileNotFoundException e){
firstTime = true;
}
GUIComponents.LoginScreen();
}
public static void passCheck(){
if(UserName.equalsIgnoreCase(user)){
if(Password.equals(pass)){
accepted = true;
}
}
else{
JOptionPane.showMessageDialog(null,"Your Username and Password do not /n match our files."
+ "Please try again.");
}
}
public static boolean firstTimeCheck(){
return firstTime;
}
}
사람이 내가에 무슨 짓을했는지 바보 같은 일을 알아낼 수있는 경우 :
public class GUIComponents extends JFrame{
public static String UserN = " ";
public static String PassW = " ";
public static void LoginScreen(){
JFrame LoginFrame = new JFrame("Log in Menu");
JPanel LoginInfo = new JPanel();
JPanel LoginAttempt = new JPanel();
JButton LoginOkay = new JButton("Log in");
LoginListenerClass loginListen = new LoginListenerClass();
LoginOkay.addActionListener(loginListen);
JButton LoginCancel = new JButton("Cancel");
CancelListenerClass cancelListen = new CancelListenerClass();
LoginCancel.addActionListener(cancelListen);
JLabel usern = new JLabel("Username:");
JLabel passw = new JLabel("Password:");
JTextField user = new JTextField(15);
JTextField pass = new JTextField(15);
LayoutManager LoginLayout = new GridLayout(2,2,5,10);
LayoutManager OkayCancel = new FlowLayout();
LoginInfo.setLayout(LoginLayout);
LoginAttempt.setLayout(OkayCancel);
LoginInfo.add(usern);
LoginInfo.add(user);
LoginInfo.add(passw);
LoginInfo.add(pass);
LoginAttempt.add(LoginOkay);
LoginAttempt.add(LoginCancel);
if(Login.firstTimeCheck()==true){
JOptionPane.showMessageDialog(null, "This is your first time using this program. \nPlease enter the Username"
+ " and Password\n you wish to set for all users.");
}
LoginFrame.add(LoginInfo, BorderLayout.CENTER);
LoginFrame.add(LoginAttempt, BorderLayout.SOUTH);
LoginFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
LoginFrame.setLocationRelativeTo(null);
LoginFrame.pack();
LoginFrame.setVisible(true);
UserN = user.getText();
PassW = pass.getText();
}
}이 아래
class LoginListenerClass implements ActionListener{
@Override
public void actionPerformed(ActionEvent e) {
if(Login.firstTimeCheck()==false){
Login.passCheck();
}
else{
try {
Login.CreateLogin(GUIComponents.UserN, GUIComponents.PassW);
System.out.println(GUIComponents.UserN+" "+ GUIComponents.PassW);
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
}
}
class CancelListenerClass implements ActionListener{
@Override
public void actionPerformed(ActionEvent e){
System.exit(0);
}
}
은 로그 함수에 대한 코드입니다 이 사건, 제게 알려주세요. 코드가 길어서 읽고 짜증나게하는 경우 사과드립니다. 여기에 코드에서
코드를 줄이고 오류를 표시하고 관련 데이터 만 사용하십시오. – iWumbo