CicinhoRaul
Messages postés221Date d'inscriptionlundi 18 juin 2007StatutMembreDernière intervention16 janvier 2009
-
9 juil. 2007 à 16:32
Twinuts
Messages postés5375Date d'inscriptiondimanche 4 mai 2003StatutModérateurDernière intervention14 juin 2023
-
10 juil. 2007 à 21:41
Salut à tous,désolé d'abord si je pose trop de questions sur le forum mais c'est parce qu'il n'y a personne autour de moi qui puisse m'aider et je n'arrive pas à m'en sortir tout seul(en même temps si vous regardez mon statut vous voyez que je suis un nul en programmation...).
J'aimerai savoir si pour ecrire plusieurs données enchainées on doit forcément utiliser ArrayList???
Car mon but est de remplir un formulaire, d'ecrire une première fois, puis appuyer sur un bouton , qui reinitialise les champs puis on ecrit une deuxieme fois et à la fin lorsque l'on enregistre tout cela dans un fichier .txt,on retrouve les premières et deuxièmes données inscrites les unes à la suite des autres.
Twinuts
Messages postés5375Date d'inscriptiondimanche 4 mai 2003StatutModérateurDernière intervention14 juin 2023111 10 juil. 2007 à 13:05
Salut,
1 - le final c'est simplement pour la sécurité, en gros ça évite de déférencer les objets et d'inclure des bugs.....
2 - pour faire ce que tu veux fais simplement (avec ce code tu ecris toujours à la fin du fichier (quand tu sélectionne le meme bien entendu ^^)) :
import java.awt.BorderLayout;
import java.awt.FlowLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import java.io.FileOutputStream;
import java.io.PrintWriter;
public void actionPerformed(ActionEvent evt) {
if (evt.getSource().equals(chkLogin)) {
txtLogin.setEnabled(chkLogin.isSelected());
} else if (evt.getSource().equals(chkPassword)) {
txtPassword.setEnabled(chkPassword.isSelected());
}
if (evt.getSource().equals(btNouveau)) {
chkLogin.setSelected(true);
txtLogin.setEnabled(chkLogin.isSelected());
txtLogin.setText("");
chkPassword.setSelected(true);
txtPassword.setText("");
txtPassword.setEnabled(chkPassword.isSelected());
} else if (evt.getSource().equals(btValider)) {
if (chkLogin.isSelected() || chkPassword.isSelected()) {
final JFileChooser ch = new JFileChooser();
ch.setAcceptAllFileFilterUsed(true);
ch.setFileSelectionMode(JFileChooser.FILES_ONLY);
final int result = ch.showSaveDialog(this);
if (result == JFileChooser.APPROVE_OPTION) {
final File destFile = ch.getSelectedFile();
if (destFile == null) {
JOptionPane.showMessageDialog(this, "Null file",
"Error", JOptionPane.ERROR_MESSAGE);
return;
}
try {
final PrintWriter pw = new PrintWriter(
new FileOutputStream(destFile, true));
if (chkLogin.isSelected()) {
pw.println(txtLogin.getText() + "\r");
}
if (chkPassword.isSelected()) {
pw.println(txtPassword.getText() + "\r");
}
pw.close();
} catch (final Exception ex) {
JOptionPane.showMessageDialog(this, "Exception : "
+ ex.getMessage(), "Error",
JOptionPane.ERROR_MESSAGE);
}
}
}
}
}
public static void main(String[] args) {
final JFrame fenetre = new JFrame("Paramètres");
final JPanel panneau = (JPanel) fenetre.getContentPane();
panneau.setLayout(new FlowLayout(FlowLayout.LEFT, 50, 50));
panneau.add(new Programm());
fenetre.pack();
fenetre.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
fenetre.setVisible(true);
}
}
------------------------------------
"On n'est pas au resto : ici on ne fait pas dans les plats tout cuits ..."
Twinuts
Messages postés5375Date d'inscriptiondimanche 4 mai 2003StatutModérateurDernière intervention14 juin 2023111 10 juil. 2007 à 14:18
Salut,
bah écoutes je lance l'application je met
login : salut
pwd : ca va
je valide et je save dans le fichier text.txt et j'ai dedans
ligne 1 : salut
ligne 2 : ca va
ensuit je fais nouveau pour effecer les champs et je met
login : bonsoir
pwd : au revoir
je valide et je save dans le fichier text.txt et j'ai dedans
ligne 1 : salut
ligne 2 : ca va
ligne 3 : bonsoir
ligne 4 : au revoir
je ferme l'application et je la relance je met
login : salut
pwd : ca va
je valide et je save dans le fichier text.txt et j'ai dedans
ligne 1 : salut
ligne 2 : ca va
ligne 3 : bonsoir
ligne 4 : au revoir
ligne 5 : salut
ligne 6 : ca va
.....
donc je ne vois pas trop ou est le problème
------------------------------------
"On n'est pas au resto : ici on ne fait pas dans les plats tout cuits ..."
Twinuts
Messages postés5375Date d'inscriptiondimanche 4 mai 2003StatutModérateurDernière intervention14 juin 2023111 10 juil. 2007 à 15:52
Salut,
voilà là j'ai compris ce que tu demande depuis des lustres ^^ voici le code illustrant ce que tu viens de dire (au passage je zape le bouton ok qui ne sert toujours à rien) :
import java.awt.BorderLayout;
import java.awt.FlowLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import java.io.FileOutputStream;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.List;
public void actionPerformed(ActionEvent evt) {
if (evt.getSource().equals(chkLogin)) {
txtLogin.setEnabled(chkLogin.isSelected());
} else if (evt.getSource().equals(chkPassword)) {
txtPassword.setEnabled(chkPassword.isSelected());
}
if (evt.getSource().equals(btNouveau)) {
// si le champ login n'est pas vide on le rajoute ensuite on le vide
if (!txtLogin.getText().equals("")) {
list.add(txtLogin.getText());
txtLogin.setText("");
}
// si le champ password n'est pas vide on le rajoute ensuite on le
// vide
if (!txtPassword.getText().equals("")) {
list.add(txtPassword.getText());
txtPassword.setText("");
}
chkLogin.setSelected(true);
txtLogin.setEnabled(chkLogin.isSelected());
chkPassword.setSelected(true);
txtPassword.setEnabled(chkPassword.isSelected());
} else if (evt.getSource().equals(btValider)) {
// si la liste n'est pas vide
if (!list.isEmpty()) {
final JFileChooser ch = new JFileChooser();
ch.setAcceptAllFileFilterUsed(true);
ch.setFileSelectionMode(JFileChooser.FILES_ONLY);
final int result = ch.showSaveDialog(this);
if (result == JFileChooser.APPROVE_OPTION) {
final File destFile = ch.getSelectedFile();
if (destFile == null) {
JOptionPane.showMessageDialog(this, "Null file",
"Error", JOptionPane.ERROR_MESSAGE);
return;
}
try {
final PrintWriter pw = new PrintWriter(
new FileOutputStream(destFile, true));
// on save toute la liste
for (final String s : list)
pw.println(s + "\r");
pw.close();
} catch (final Exception ex) {
JOptionPane.showMessageDialog(this, "Exception : "
+ ex.getMessage(), "Error",
JOptionPane.ERROR_MESSAGE);
}
// on vide la liste
// je le fait ici pour la vider meme en cas d'erreurs
list.clear();
}
}
}
}
public static void main(String[] args) {
final JFrame fenetre = new JFrame("Paramètres");
final JPanel panneau = (JPanel) fenetre.getContentPane();
panneau.setLayout(new FlowLayout(FlowLayout.LEFT, 50, 50));
panneau.add(new Programm());
fenetre.pack();
fenetre.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
fenetre.setVisible(true);
}
}
------------------------------------
"On n'est pas au resto : ici on ne fait pas dans les plats tout cuits ..."
cs_DARKSIDIOUS
Messages postés15814Date d'inscriptionjeudi 8 août 2002StatutMembreDernière intervention 4 mars 2013131 9 juil. 2007 à 17:13
Non tu peux utiliser tout ce qui te passe par la tête pour faire cà : Vector, ArrayList, LinkedList, etc. (d'ailleurs, dans ce cas précis, je pense que la LinkedList serait un peu plus optimisée).
Mais bon, je vois pas trop le rapport entre la collection qui te permettra de stocker tes données et ton problème de réinitialisation de tout à l'heure !
Vous n’avez pas trouvé la réponse que vous recherchez ?
cs_GodConan
Messages postés2113Date d'inscriptionsamedi 8 novembre 2003StatutContributeurDernière intervention 6 octobre 201211 9 juil. 2007 à 19:11
vi moi non plus je ne vois pas trop le rapport ;o) hihi ...
Sun préconise d utiliser un ArrayList plutot qu un Vector depuis la 1.6 ;o) m enfin les vielles habitudes ont la vie dures ;o)
CicinhoRaul
Messages postés221Date d'inscriptionlundi 18 juin 2007StatutMembreDernière intervention16 janvier 2009 9 juil. 2007 à 21:19
C'est simple voici le principe je veux 1-reinitialiser deux champs lesquels ont été écrit une premiere fois puis 2- stocker ces premiers champs et 3 ecrire de nouveaux champs et ainsi de suite
cs_GodConan
Messages postés2113Date d'inscriptionsamedi 8 novembre 2003StatutContributeurDernière intervention 6 octobre 201211 9 juil. 2007 à 21:24
ben vi ;o) tu peux use une list quel qu elle soit ... ;o) mais bon arrange toi qd meme pour ne pas avoir trop d enregistrement ;o) ... ;o) sinon il te faudra quand meme "bufferiser" pour naviguer dedans....
et pourquoi les conserver ds un vcteur ??!! si tu les enregistre ds un fichier ou ds une BDD il te suffit d y accéder par la suite.... pour rapeller les valeurs
CicinhoRaul
Messages postés221Date d'inscriptionlundi 18 juin 2007StatutMembreDernière intervention16 janvier 2009 10 juil. 2007 à 10:27
Grâce à ArrayList je veux avoir la possibilité de mettre plusieurs données à la suite et toutes ces données etant mis à la suite , je souhaiterais les ecrire dans un fichier .txt
Voici mon code :
final class Structure
{
static String LOGIN;
static String PASSWORD;
}
Twinuts
Messages postés5375Date d'inscriptiondimanche 4 mai 2003StatutModérateurDernière intervention14 juin 2023111 10 juil. 2007 à 10:54
Salut,
tu n'as pas besoin de passer par une list pour faire ce que tu veux..... de plus arrete avec ton truc structure il ne te sert à rien.... ensuite pour ta liste tu fais :
[...]
ArrayList <Structure>liste ; //variable globale
[...]
ArrayList<Structure> liste = new ArrayList<Structure>();//variable locale au constructeur qui n'initialise en rien la var globale
//faudrait faire ce qui suit pour initialiser la variable globale
//liste = new ArrayList<Structure>();
[...]
//tout le reste touche une list qui est null.....
autre point tu fais :
if(evt.getSource()==nouveau)
liste.add(new Structure());
or ici aussi tu es à 3000 lieux du fonctionnement de ActionListener une fois de plus tu ferais vraiment mieux de comprendre l'utilisation de ActionListener parce que là tu es à l'ouest
voici une solution SANS liste (au passage ton bouton 'ok' ne sert à rien)
import java.awt.BorderLayout;
import java.awt.FlowLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import java.io.FileOutputStream;
import java.io.PrintWriter;
public void actionPerformed(ActionEvent evt) {
if (evt.getSource().equals(chkLogin)) {
txtLogin.setEnabled(chkLogin.isSelected());
} else if (evt.getSource().equals(chkPassword)) {
txtPassword.setEnabled(chkPassword.isSelected());
}
if (evt.getSource().equals(btNouveau)) {
// lors de l'appui sur nouveau le prochain enregistrement ecrasera
// le fichier
append = false;
chkLogin.setSelected(true);
txtLogin.setEnabled(chkLogin.isSelected());
txtLogin.setText("");
chkPassword.setSelected(true);
txtPassword.setText("");
txtPassword.setEnabled(chkPassword.isSelected());
} else if (evt.getSource().equals(btValider)) {
if (chkLogin.isSelected() || chkPassword.isSelected()) {
final JFileChooser ch = new JFileChooser();
ch.setAcceptAllFileFilterUsed(true);
ch.setFileSelectionMode(JFileChooser.FILES_ONLY);
final int result = ch.showSaveDialog(this);
if (result == JFileChooser.APPROVE_OPTION) {
final File destFile = ch.getSelectedFile();
if (destFile == null) {
JOptionPane.showMessageDialog(this, "Null file",
"Error", JOptionPane.ERROR_MESSAGE);
return;
}
try {
final PrintWriter pw = new PrintWriter(
new FileOutputStream(destFile, append));
if (chkLogin.isSelected()) {
pw.println(txtLogin.getText() + "\r");
}
if (chkPassword.isSelected()) {
pw.println(txtPassword.getText() + "\r");
}
pw.close();
} catch (final Exception ex) {
JOptionPane.showMessageDialog(this, "Exception : "
+ ex.getMessage(), "Error",
JOptionPane.ERROR_MESSAGE);
}
// on repasse en append à cause du traitement de nouveau
append = true;
}
}
}
}
public static void main(String[] args) {
final JFrame fenetre = new JFrame("Paramètres");
final JPanel panneau = (JPanel) fenetre.getContentPane();
panneau.setLayout(new FlowLayout(FlowLayout.LEFT, 50, 50));
panneau.add(new Programm());
fenetre.pack();
fenetre.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
fenetre.setVisible(true);
}
}
------------------------------------
"On n'est pas au resto : ici on ne fait pas dans les plats tout cuits ..."
CicinhoRaul
Messages postés221Date d'inscriptionlundi 18 juin 2007StatutMembreDernière intervention16 janvier 2009 10 juil. 2007 à 14:02
Hello, excuse moi mais à chaque fois que je fais le test, les premieres données sont ecrasées alors qu'à la base j'aimerais les enregistrer dans mon fichier c'est pour cette raison que je pensais qu'un ArrayList ferait l'affaire.
Le but c'est d'ecrire autant de fois que je veux dans mon fichier texte
CicinhoRaul
Messages postés221Date d'inscriptionlundi 18 juin 2007StatutMembreDernière intervention16 janvier 2009 10 juil. 2007 à 14:43
Salut, excuse-moi je suis trop c.. ,oui oui , ça prouve que je dois reprendre des cours de français....
Je veux faire ce que tu as ecris precedemment mais directement.
Je vais essayer d'être compréhensible :
Si tu veux j'essaie de le faire mais sans appuyer deux fois sur valider(désolé j'arrive pas à être clair).
J'execute mon programme:
Je tape
login: bonjour
password: ca va
J'appuie sur "nouveau "qui permet d'enregistrer "bonjour et ca va"(et comme tu me l'as gentiment {et d'ailleurs je te remercierai jamais assez }montrer il permet aussi de reinitialiser les champs) dans mon ArrayList donc mon ArrayList aura deux elements deja.
Apres, j'ecris une deuxieme fois:
login : merci
password: ok
J'appuie sur nouveau il stocke "merci et ok " dans mon ArrayList donc il y aura 4 elements.
et ainsi de suite.
A la fin, lorsque j'appuierai sur valider: il ecrira tous les éléments de l'arraylist d'ou pourquoi je pensai à utiliser un iterateur.
Ce que tu m'as dit est tout à fait parfait,mais vu le type de formulaire que je dois faire,je crois qu'il faut mieux que je fasse un ArrayList(le vrai formulaire que j'ai se fait en trois parties)
Voila, encore une n-ième fois MERCI et désolé du dérangement.
Twinuts
Messages postés5375Date d'inscriptiondimanche 4 mai 2003StatutModérateurDernière intervention14 juin 2023111 10 juil. 2007 à 16:32
[auteurdetail.aspx?ID=190746 GodConan]
> je sais bien mais bon... si je l'aide pas, j'ai bien l'impression qu'il risque d'attendre ses 100ans avant d'y arriver .... ^^
------------------------------------
"On n'est pas au resto : ici on ne fait pas dans les plats tout cuits ..."