Java connexion à l'interface graphique de l'écran
J'ai créé un écran de connexion pour mon IHM Java programme, L'écran de connexion sur un clic de bouton vérifie si le nom d'utilisateur et le mot de passe a été entré dans le textfields était égal à la ligne dans le fichier texte et si il le fait, il permet à l'utilisateur de passer à l'écran suivant, si ce n'est un JOptionPane.showMessageDialog
s'affiche. J'ai aussi un autre écran qui permet à l'utilisateur d'écrire dans le fichier, qui insère un nouveau nom d'utilisateur et mot de passe.
Droit donc mon problème est qu'il ne lit que les 2 dernières lignes de code, je suis seulement capable de se connecter avec la dernière création de nom d'utilisateur et mot de passe. Comment puis-je aller sur le faire lire chaque ligne pour vérifier le nom d'utilisateur et le mot de passe?
Le principal écran de Connexion
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import java.util.*;
public class login extends JFrame {
JButton blogin;
JPanel loginpanel;
JTextField txuser;
JTextField pass;
JButton newUSer;
JLabel username;
JLabel password;
public login(){
super("Login Autentification");
blogin = new JButton("Login");
loginpanel = new JPanel();
txuser = new JTextField(15);
pass = new JPasswordField(15);
newUSer = new JButton("New User?");
username = new JLabel("User - ");
password = new JLabel("Pass - ");
setSize(300,200);
setLocation(500,280);
loginpanel.setLayout (null);
txuser.setBounds(70,30,150,20);
pass.setBounds(70,65,150,20);
blogin.setBounds(110,100,80,20);
newUSer.setBounds(110,135,80,20);
username.setBounds(20,28,80,20);
password.setBounds(20,63,80,20);
loginpanel.add(blogin);
loginpanel.add(txuser);
loginpanel.add(pass);
loginpanel.add(newUSer);
loginpanel.add(username);
loginpanel.add(password);
getContentPane().add(loginpanel);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
Writer writer = null;
File check = new File("userPass.txt");
if(check.exists()){
//Checks if the file exists. will not add anything if the file does exist.
}else{
try{
File texting = new File("userPass.txt");
writer = new BufferedWriter(new FileWriter(texting));
writer.write("message");
}catch(IOException e){
e.printStackTrace();
}
}
blogin.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
try {
File file = new File("userPass.txt");
Scanner scan = new Scanner(file);;
String line = null;
FileWriter filewrite = new FileWriter(file, true);
String usertxt = " ";
String passtxt = " ";
String puname = txuser.getText();
String ppaswd = pass.getText();
while (scan.hasNext()) {
usertxt = scan.nextLine();
passtxt = scan.nextLine();
}
if(puname.equals(usertxt) && ppaswd.equals(passtxt)) {
MainMenu menu =new MainMenu();
dispose();
}
else if(puname.equals("") && ppaswd.equals("")){
JOptionPane.showMessageDialog(null,"Please insert Username and Password");
}
else {
JOptionPane.showMessageDialog(null,"Wrong Username /Password");
txuser.setText("");
pass.setText("");
txuser.requestFocus();
}
} catch (IOException d) {
d.printStackTrace();
}
}
});
newUSer.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
NewUser user = new NewUser();
dispose();
}
});
}
}
Et le nouveau fichier de l'utilisateur
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import java.util.*;
public class NewUser extends JFrame {
JButton create;
JPanel newUserPanel;
JTextField txuserer;
JTextField passer;
public NewUser(){
super("Registration");
create = new JButton("Create");
newUserPanel = new JPanel();
txuserer = new JTextField(15);
passer = new JPasswordField(15);
setSize(300,200);
setLocation(500,280);
newUserPanel.setLayout (null);
txuserer.setBounds(70,30,150,20);
passer.setBounds(70,65,150,20);
create.setBounds(110,100,80,20);
newUserPanel.add(create);
newUserPanel.add(txuserer);
newUserPanel.add(passer);
getContentPane().add(newUserPanel);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
Writer writer = null;
File check = new File("userPass.txt");
if(check.exists()){
//Checks if the file exists. will not add anything if the file does exist.
}else{
try{
File texting = new File("userPass.txt");
writer = new BufferedWriter(new FileWriter(texting));
writer.write("message");
}catch(IOException e){
e.printStackTrace();
}
}
create.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
try {
File file = new File("userPass.txt");
Scanner scan = new Scanner(file);;
FileWriter filewrite = new FileWriter(file, true);
String usertxter = " ";
String passtxter = " ";
String punamer = txuserer.getText();
String ppaswder = passer.getText();
while (scan.hasNext()) {
usertxter = scan.nextLine();
passtxter = scan.nextLine();
}
if(punamer.equals(usertxter) && ppaswder.equals(passtxter)) {
JOptionPane.showMessageDialog(null,"Username is already in use");
txuserer.setText("");
passer.setText("");
txuserer.requestFocus();
}
else if(punamer.equals("") && ppaswder.equals("")){
JOptionPane.showMessageDialog(null,"Please insert Username and Password");
}
else {
filewrite.write(punamer+"\r\n" +ppaswder+ "\r\n");
filewrite.close();
JOptionPane.showMessageDialog(null,"Account has been created.");
dispose();
login log = new login();
}
} catch (IOException d) {
d.printStackTrace();
}
}
});
}
}
.setLayout (null);
et .setBounds(20,28,80,20);
-- vous ne voulez pas le faire. Sérieusement.Vraiment? Pas de soucis je vais travailler sur la fixation de la une fois, j'ai fixé mon premier problème. (Y)
Évitez d'utiliser des
null
mises en page, pixel parfait, les mises en page sont une illusion à l'intérieur moderne de conception de l'interface utilisateur. Il y a trop de facteurs qui affectent la taille des composants, aucune de laquelle vous pouvez contrôler. Swing a été conçu pour travailler avec les gestionnaires de disposition à la base, en supprimant ces entraînera pas la fin des questions et des problèmes que vous passerez plus de temps à essayer de rectifier
OriginalL'auteur ThomasMcDonald | 2014-10-31
Vous devez vous connecter pour publier un commentaire.
Ce:
Besoin d'aller à l'intérieur de ce:
Vous êtes une boucle dans le fichier avec la boucle while, mais seulement de tester l'égalité des Cordes après la boucle while se termine. Cela ne peut pas fonctionner comme vous allez le trouver.
Beaucoup de moyens. Vous pouvez définir une variable booléenne si les blocs sont remplies, puis cochez la case après la boucle se termine. Vous devriez être en mesure de comprendre cela.
<3 merci pour l'aide.
OriginalL'auteur Hovercraft Full Of Eels