IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 Java Discussion :

Générer un rapport


Sujet :

Java

  1. #1
    Membre régulier
    Homme Profil pro
    Inscrit en
    Juin 2010
    Messages
    241
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36

    Informations forums :
    Inscription : Juin 2010
    Messages : 241
    Points : 74
    Points
    74
    Par défaut Générer un rapport
    Bonjour,
    je dispose d'un programme java qui affiche des fenêtres, contenant des JCombobox. L'utilisateur sélectionne des items dans ces combobox et j'aimerais qu'à la fin, je puisse obtenir un petit résumé de ce que l'utilisateur à sélectionné ( un genre de rapport). Je ne sais pas du tout comment faire
    Pouvez vous m'aider ?
    Merci d'avance.

  2. #2
    Membre expérimenté Avatar de Ivelios
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juillet 2008
    Messages
    1 031
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 031
    Points : 1 540
    Points
    1 540
    Par défaut
    Tu pourrais stocker les différents résultat dans un tableau de String.
    (il me semble que c'est getSelectedItem() pour récupérer l'élément sélectionner)

    Il y a plusieurs manière de géré ça. En supposant que les fenêtre s'affiche à la suite comme une sorte de formulaire dynamique :
    1/ Quand tu passe d'une fenêtre à une autre tu passe le String[] en paramètre du constructeur de la nouvelle fenêtre,...

    2/ tu créé une classe Rapport avec une tableau de String (ou liste) comme attributs. Et tu passe l'instance de cette classe en paramètre des constructeurs ( comme dans le 1/ )

    Pour finir, tu récupère ce qu'il y a dans ton tableau (ou ta liste ) et tu l'affiche dans un JTextArea ou plusieurs JTextField en rajoutant de la "fioriture" pour rendre le rapport cohérent.
    Il était une fois [...] Et ils vécurent heureux et eurent beaucoup d'enfants!

  3. #3
    Membre régulier
    Homme Profil pro
    Inscrit en
    Juin 2010
    Messages
    241
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36

    Informations forums :
    Inscription : Juin 2010
    Messages : 241
    Points : 74
    Points
    74
    Par défaut
    Alors, merci pour cette réponse détaillée.
    J'ai attaqué le code, mais je bloque au moment de faire appel à ma méthode Rapport dans mes fenêtres.

    La méthode est sensé recopier à la suite ce qu'on lui donne comme paramètre :

    Classe Rapport :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    import java.util.ArrayList; 
     
    public class Rapport {
     
    	ArrayList<String> mon_rapport = new ArrayList<String>(); 
    	public Rapport (String nouvelle_valeur){
    		mon_rapport.add(nouvelle_valeur);
    			}
    }

    Mes fenetres :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    import java.awt...
     
    public class Fenetre_type extends JFrame {
     
       public Fenetre_type (){
     
    //bla bla bla
     
    Rapport(combo1.getSelectedItem()); // Je bloque ici 
    }
    }

    Je pense que la classe fenetre ne reconnait pas la classe rapport.
    Je ne connais pas l'équivalent de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Rapport mon_rapport = new Rapport()
    lorsque la méthode possède un paramètre...

  4. #4
    Membre expérimenté Avatar de Ivelios
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juillet 2008
    Messages
    1 031
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 031
    Points : 1 540
    Points
    1 540
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    import java.util.ArrayList; 
     
    public class Rapport {
     
    	ArrayList<String> monRapport = new ArrayList<String>(); 
    	public Rapport (){}
     
    /**ajouter un String à mon rapport*/
    public void ajouterDonnee(String str){
    mon_rapport.add(str);
    }
     
    /**retourne le rapport*/
    public ArrayList getRapport(){ return monRapport;}
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Rapport monRapport = new Rapport();
    //Passage de "monRapport" au différentes fenêtres
    FenetreTest f = new FenetreTest(monRapport);
     
    monRapport.ajouterDonnee(field1.getText());
    //...
    monRapport.ajouterDonnee(field2.getText());
    //...
    monRapport.ajouterDonnee(field3.getText());
    ArrayList<String> rapport = monRapport.getRapport();
    //Traitement de rapport
    Je ne sais pas si j'ai réellement répondu à la question
    Il était une fois [...] Et ils vécurent heureux et eurent beaucoup d'enfants!

  5. #5
    Membre régulier
    Homme Profil pro
    Inscrit en
    Juin 2010
    Messages
    241
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36

    Informations forums :
    Inscription : Juin 2010
    Messages : 241
    Points : 74
    Points
    74
    Par défaut
    Alors, merci beaucoup, mais cela ne fonctionne pas chez moi.
    Le problème, c'est que je voudrais récupérer le texte lors de l'appuie d'un bouton, et j'ai donc créer une classe interne ( avec un action listener). Mais alors, ma classe ne reconnait pas la commande
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    monRapport.ajouterDonnee(combo1.getSelectedItem());
    Car monrapport est déclaré dans la fonction :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    public class Fenetre_type extends JFrame {
     
    public Fenetre_type (ArrayList<String> monRapport){
     
    // bla bla bla
    Bouton.addActionListener(new Rapport_Listener())
    }
      class Rapport_Listener implements ActionListener{
     
    		public void actionPerformed(ActionEvent arg0) {
            monRapport.ajouterDonnee(combo1.getSelectedItem()); // L'erreur est Ici
    }
    }
    }
    Est-ce que je m'y prend mal ?

  6. #6
    Membre expérimenté Avatar de Ivelios
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juillet 2008
    Messages
    1 031
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 031
    Points : 1 540
    Points
    1 540
    Par défaut
    Ajoute monRapport comme attribut de classe
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    public class Fenetre_type extends JFrame {
     private Rapport monRapport;//Attribut de classe
    public Fenetre_type (ArrayList<String> monRapport){//modif : Rapport monRapport
     this.monRapport = monRapport;//Initialisation
    // bla bla bla
    Bouton.addActionListener(new Rapport_Listener())
    }
      class Rapport_Listener implements ActionListener{
     
    		public void actionPerformed(ActionEvent arg0) {
            //Appel "monRapport" l'attribut de classe
            monRapport.ajouterDonnee(combo1.getSelectedItem()); // L'erreur est Ici
    }
    }
    }
    ps : Pourquoi passe tu un ArrayList<String> en paramètre de constructeur??
    Il faut passer une instance de Rapport
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    public Fenetre_type (Rapport monRapport){
    Si tu ne le fait pas tu ne pourras pas utiliser la méthode ajouterDonnee qui appartient à la classe Rapport.
    Une instance de ArrayList ne pourras pas appeler cette méthode car elle ne la connait pas
    Il était une fois [...] Et ils vécurent heureux et eurent beaucoup d'enfants!

  7. #7
    Membre régulier
    Homme Profil pro
    Inscrit en
    Juin 2010
    Messages
    241
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36

    Informations forums :
    Inscription : Juin 2010
    Messages : 241
    Points : 74
    Points
    74
    Par défaut
    Ok, je comprend un peu mieux ( je débute en java ^^).
    Donc, jusque là, ca va, mais dans mon programme en fait, j'ai différentes fenêtres qui sont des héritières de fenêtre_type. Et bien entendu, il faut faire connaitre la méthode monRapport a chacune.
    Alors, j'instancie dans chaque fenêtre ( je ne sais pas si c'est la bonne manière).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    public class Fenetre_numero extends Fenetre_type {
     
    	public Fenetre_numero(){
     
    		super(monRapport);
    // Bla bla bla
    }}
    Mais je recoit une alerte disant que je dois passer MonRapport en Static. Je le fait. OK, plus aucune erreur. Je lance et là :

    Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
    at Fenetre_type$Rapport_Listener.actionPerformed(Fenetre_type.java:292)
    at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
    et j'en passe...

    Qu'est-ce j'ai mal fait?

  8. #8
    Membre expérimenté Avatar de Ivelios
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juillet 2008
    Messages
    1 031
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 031
    Points : 1 540
    Points
    1 540
    Par défaut
    Qu'es ce qui se trouve à la 292ème ligne?
    Il était une fois [...] Et ils vécurent heureux et eurent beaucoup d'enfants!

  9. #9
    Membre régulier
    Homme Profil pro
    Inscrit en
    Juin 2010
    Messages
    241
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36

    Informations forums :
    Inscription : Juin 2010
    Messages : 241
    Points : 74
    Points
    74
    Par défaut
    Et bien c'est justement l'appel de AjoutDonnée via mon bouton ActionListener :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    class Rapport_Listener implements ActionListener{
     
    		public void actionPerformed(ActionEvent arg0) {
     
    monRapport.ajouterDonnee((String) (combo1.getSelectedItem())); // Ligne en question 
    }
    }
    Je pense que je doit mal utiliser la méthode super. J'essaye de me renseigner dessus.
    En résumé, mon programme est constitué d'une classe Fenêtre_type qui crée une fenêtre avec un bouton Générer_le_rapport (=enregistrer les champs de la fenêtre en cours dans monRapport) , et mes autres classes sont des filles de cette classe. C'est les classes filles que je lance dans mon main.

  10. #10
    Membre expérimenté Avatar de Ivelios
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juillet 2008
    Messages
    1 031
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 031
    Points : 1 540
    Points
    1 540
    Par défaut
    A un moment ou un autre ( de préférence au début) tu initialise bien monRapport?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Rapport monRapport = new Rapport();
    Il était une fois [...] Et ils vécurent heureux et eurent beaucoup d'enfants!

  11. #11
    Membre régulier
    Homme Profil pro
    Inscrit en
    Juin 2010
    Messages
    241
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36

    Informations forums :
    Inscription : Juin 2010
    Messages : 241
    Points : 74
    Points
    74
    Par défaut
    Tu as vu juste ! Je l'avais déclaré
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    protected static  Rapport monRapport
    mais pas initialisé ( quelle quiche ).
    Merci de ton aide.
    J'aurais cependant encore 2 questions :
    1) Pourquoi le fait de passer monRapport en static solutionne des problèmes ( je vais bien sûr me référer à la doc, mais comme j'ai un exemple concret avec mon programme, je comprendrais mieux).

    2) Disons que mon programme lance 2 Fenêtres filles. L'une avec 5 combobox l'autre avec 7. Ma Fenêtre type me crée 7 combobox et en ajoute 5 par défaut. Les 2 autres sont ajoutés directement depuis la fille.
    Etant donné que mon bouton se trouve dans la fenêtre mère, comment spécifié " Si l'action est réaliser depuis Fenêtre_1, ajoute les 5 combobox au rapport, si c'est Fenêtre_2, ajoute les 7".

    Je pense qu'un simple IF combiné avec un getSource pointant soit sur Fenetre_1 ou Fenetre_2 ferait l'affaire, mais je ne sais pas encore bien l'utiliser...

Discussions similaires

  1. Réponses: 6
    Dernier message: 21/10/2008, 11h02
  2. [Projet] Générer le rapport
    Par c moi dans le forum WinDev
    Réponses: 2
    Dernier message: 17/06/2007, 13h04
  3. [SQL2K] Générer un rapport mensuel
    Par Faboul dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 13/06/2007, 10h36
  4. Utilitaire pour générer un rapport descriptif d'un BD
    Par Régent dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 20/03/2006, 17h17
  5. [Java] Générer des rapports à la crystal reports
    Par Vessaz dans le forum Autres outils décisionnels
    Réponses: 4
    Dernier message: 11/10/2004, 19h07

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo