Bonsoir à tous,
Je voudrais que ce que je saisie dans un Jtexfield de mon programme soit récupérer, enregistrer dans mon ArrayList et afficher dans un JLabel mais malheureusement une fois que je ferme mon programme je perds ce que j'ai saisie dans mon jTexfield.
Voici un bout de mon code :
Les méthodes
package pkg.model;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.Serializable;
import java.util.ArrayList;
public class AjouterBudget implements Serializable {
private double ValBudg = 0;
private ArrayList SauvegardeBudget;
public AjouterBudget() {
SauvegardeBudget = new ArrayList();
}
public double getValBudg() {
return ValBudg;
}
public void setValBudg(double ValBudget) {
this.ValBudg = ValBudg;
}
public Exception saveBase (String nomFichier) throws FileNotFoundException{
SauvegardeBudget.clear();
SauvegardeBudget.add(ValBudg);
try
{
/* Ouverture et ecriture du fichier de sauvegarde */
FileOutputStream fileOutput = new FileOutputStream(nomFichier);
// creation du flux
ObjectOutputStream output = new ObjectOutputStream(fileOutput);
// ecriture
output.writeObject(SauvegardeBudget);
output.flush();
output.close();
}
catch(IOException e)
{
return(e);
}
return(null);
}
public Exception openBase(String nomFichier){
try{
// Definition du fichier de lecture et du flux
FileInputStream fileInput = new FileInputStream(nomFichier);
ObjectInputStream input = new ObjectInputStream(fileInput);
// recuperation de l'ArrayList de sauvegarde
SauvegardeBudget = (ArrayList) input.readObject();
input.close();
}
catch(ClassNotFoundException e1){
return(e1);
}
catch(IOException e2){
return(e2);
}
//Je charge les variables depuis l'ArrayList
ValBudg = (Integer)SauvegardeBudget.get(0);
return(null);
}
}
et voici le la bout de code concerné pour mon interface graphique :
budgOk.addActionListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent e){
if (MontBudg.getText().length() == 0){
JOptionPane.showMessageDialog(null, "Veuillez renseigner le montant de votre budget", "Message d'avertissement",
JOptionPane.ERROR_MESSAGE) ;
}
else {
Main.l_budgetA.setText(MontBudg.getText()); // Affiche le valeur saisie dans un JLabel dans la fenetre.
setVisible(false);
}
}
});
}
Merci d'avance pour votre aide
Ce serait sympa si tu pouvais mettre ton code sur un site qui gère l'indentation, comme pastebin. Là c'est pénible à lire.
Ah oui pardon je me suis rendu compte que c'était pénible à lire, voici le lien pastebin :
http://pastebin.com/dUewE0JB
Pas de majuscules aux variables en Java.
-->
private ArrayList SauvegardeBudget;
public AjouterBudget() {
SauvegardeBudget = new ArrayList();
}
<--
Les bases de Java ne sont même pas acquises et ont dirait du code de 2002. Franchement, tu devrais relire la documentation : ton code est ignoble. As-tu déjà entendu parler du concept d'interface et de programmation orientée objet ?
<--
ValBudg = (Integer) SauvegardeBudget.get(0);
-->
A quoi diantre te sert ta liste si tout ce que tu en récupères c'est la première valeur ?!
Et putain :
<--
private double ValBudg = 0;
...
ValBudg = (Integer) SauvegardeBudget.get(0);
-->
La cohérence des types !!!!!
<--
public --->Exception<--- openBase(String nomFichier) {
...
return (e1);
...
return (e2);
...
return (null);
...
-->
Mais bordel, c'est un code fake ou quoi ?!
Tu n'as RIEN compris à la programmation orientée objet, tu devrais revoir les bases de l'algo et de la programmation tout court.
PommesCarrotes
Nan, mon problème, c'est qu'il se lance dans les IHM alors qu'il n'a pas encore acquis les bases. Ce n'est pas lui rendre service que ne pas lui dire :p Mais ce qui me dérange le plus, c'est qu'il apprend visiblement avec des cours qui datent d'avant java 2 et surtout, des cours qui n'expliquent visiblement pas la POO
D'ailleurs, je n'ai pas tout relevé, mais vu que tu en parles :
-> public Exception saveBase (String nomFichier) throws FileNotFoundException <-
LOL et ça qu'est-ce que tu en penses :D ?
oula calmez vous ça fait même pas trois mois que je programme en JAVA j'ai jamais écrit que j'étais un expert à ce que je sache ![]()
PS : je ne voulais pas être agressif, je suis juste effaré par le code. C'est cool d'apprendre à programmer, mais même si on ne compte pas devenir informaticien ou ingénieur, c'est mieux de faire les choses proprement. Surtout avec tous les cours et documentations disponibles sur le net
POur l'auteur, petit conseil, une ArrayList, c'est à ça que ça ressemble, la déclaration et instanciation (pour des nombres à virgule flottante en précision double):
List<Double> maBelleListeDeDoubles = new ArrayList<>();
Avec cette notation, tu n'as pas besoin de faire de casts en suite.
liquid-ocelot75
3 mois, c'est 12 fois plus de temps qu'il n'en faut pour maîtriser les bases d'un nouveau langage. Encore une fois, tu t'es dispersé en bricolant à gauche et à droite. Les bases ne sont pas acquises, c'est pour cette raison que tu rencontres des difficultés sur ce genre de problèmes. Reprend à tête reposée les bases de la POO et de Java pendant une semaine et tu verras les choses sous un meilleur regard. Mais surtout, ne te disperse pas.
Je suis étudiant en informatique et j'ai un projet a rendre en java après le prof nous aide pas trop et il n'a pas repris les bases en java comme il aurait dû le faire normalement mais il a commencé directement par les collections bref je vais pas vous soûler avec mes problèmes, si j'avais eu le temps j'aurai bien sur que j'aurai suivi tranquillement des tutos ou pris un bouquin mais malheureusement je n'ai pas eu trop le temps donc je suis un peu obligé de faire le projet à l'arrache .
Ma question est donc la suivante en créant une classe qui contient mes méthodes Set, Get, mon ArrayList,etc...
Comment dans la vue je dois faire pour que ce que j'entre dans un jtexfield par exemple soit enregistrer dans l'arraylist car comme je l'ai évoqué dès que je ferme la fenêtre les données ne s'enregistre pas.
J'ai utilisé "String text = jtextfield.getText();" le truc c'est que des que j'entre quelque chose dans mon jtexfield il le récupère il n'y a pas de problème mais dès que je ferme la fenêtre il enregistre pas ce que j'ai entré dans le jtexfield.
Tu déclenches la sauvegarde avant la fermeture, au moins ?
Non c'est ça le problème je sais pas comment gérer ça, par exemple je voulais utilisé une JOptionPane par exemple pour confirmez l'enregistrement des données à la fermeture de la fenêtre
Finalement vous avez tous raison je vais emprunté un livre à la bibliothèque et revoir les bases même si je respecte pas le cahier des charges entièrement par manque de temps tant pis parce que là le code est catastrophique (je viens de m'en rendre compte en commençant a lire des tutos et grâce à vos commentaires)
Merci à tous pour votre aide ![]()
Excellent ![]()
Tu vas bien progresser ![]()
PS : On passe à Java 8 cette année, n'hésite pas à te renseigner sur les nouveautés (lambdas, en particulier).
Non, mais y'a les lambdas et il paraît que c'est bien utile
Je savais pas que Java 8 était prévu pour cette année par contre ![]()
Vu que java 7 est assez récent et a connu quelques soucis ![]()
Pour schématiser, le niveau d'évolution de Java de Java 7 à 8 sera supérieur à celui de 4 vers 5. Les programmes seront probablement pensés de façon radicalement différente. la contrepartie sera un énorme gain sur les programmes parallélisés une fois que la JVM sera parfaitement au point ![]()
Autant les nouveautés 6->7, c'était cool, mais sans plus.
Autant les nouveautés 7->8, faudra s'y mettre vraiment et bien les utiliser.
Les lambdas et l'amélioration des collections et des interfaces, c'est pas du tout anodin. Faudrait que je m'y mette sérieusement, d'ailleurs.
Par contre eclipse est encore à la ramasse avec, je me suis mis à IntelliJ qui lui, gère très bien Java 8 :D
Oui, c'est radicalement différent et ça demande de s'habituer à la programmation fonctionnelle ;D
PS: de 6->7, c'était effectivement des bricoles pour la plupart des choses.
Ah ouais, tant que ça
Faudra que je m'y mette aussi quand eclipse sera au point ![]()
Passe plutôt à IntelliJ Idea :p
Très très bon IDE. Depuis que je l'ai pris en main, revenir sous Eclipse (ou pire saous NetBeans) est une véritable douleur.