Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : problème d'action sur un bouton [ Divers / Général ] (crazysetup)

vendredi 15 février 2008 à 22:09:05 | problème d'action sur un bouton

crazysetup

Bonjour à tous, j'ai un petit problème, j'ai une classe qui me construit une frame dans laquelle ya un JButton "Valider", l'action sur valider est censée appeler une méthode add_team() qui se trouve dans la même classe que le bouton à savoir la classe saisie_equipe.
Et voici le code concerné :



vendredi 15 février 2008 à 22:14:11 | Voici mon code

crazysetup

Voivi mon code :

import java.awt.BorderLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.FileWriter;
import java.io.IOException;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;


public class saisie_equipe  {
   

   
    protected JFrame saisie;
    protected JPanel titre;
    protected JPanel saisir;
    protected JPanel actions;
   
    protected JLabel title;
   
    protected JLabel name;
    protected JLabel date;
    protected JLabel president;
    protected JLabel nation;
    protected JLabel status;
    protected JLabel league;
    protected JLabel players;
   
    protected JTextField Name;
    protected JTextField Date;
    protected JTextField President;
    protected JTextField Nation;
    protected JTextField Status;
    protected JTextField League;
    protected JButton Players;
   
    protected JButton Valider;
    protected JButton Annuler;
   
   
   
    public saisie_equipe()
    {
       
        JFrame saisie = new JFrame();
        JPanel titre = new JPanel();
        JPanel saisir = new JPanel();
        JPanel actions = new JPanel();
       
        JLabel title = new JLabel("Saisie");
       
        JLabel name = new JLabel ("Nom du club : ");
        JLabel date = new JLabel ("Date de fondation : ");
        JLabel president = new JLabel ("Président: ");
        JLabel nation = new JLabel ("Nation: ");
        JLabel status = new JLabel ("Statut : ");
        JLabel league = new JLabel("Ligue : ");
        JLabel players = new JLabel("Effectif");
       
         JTextField Name = new JTextField("");
        JTextField Date = new JTextField("");
        JTextField President = new JTextField("");
        JTextField Nation = new JTextField("");
        JTextField Status = new JTextField("");
        JTextField League = new JTextField("");
       
        JButton Players = new JButton("Saisir les joueurs");
        Players.addActionListener(new ActionListener(){
                public void actionPerformed(ActionEvent arg0) {
                new Joueurs();
                    }
        });
       
        JButton Valider = new JButton("Valider");
        Valider.addActionListener(new ActionListener(){
                public void actionPerformed(ActionEvent arg0) {
               
                add_team();
            }
        });

       
        JButton Annuler = new JButton ("Annuler");
       
        titre.add(title);
        saisir.setLayout(new GridLayout(7,3));
        saisir.add(name);
        saisir.add(new JLabel(""));
        saisir.add(Name);
        saisir.add(date);
        saisir.add(new JLabel(""));
        saisir.add(Date);
        saisir.add(president);
        saisir.add(new JLabel(""));
        saisir.add(President);
        saisir.add(nation);
        saisir.add(new JLabel(""));
        saisir.add(Nation);
        saisir.add(status);
        saisir.add(new JLabel(""));
        saisir.add(Status);
        saisir.add(league);
        saisir.add(new JLabel(""));
        saisir.add(League);
        saisir.add(players);
        saisir.add(new JLabel(""));
        saisir.add(Players);
       
        actions.setLayout(new GridLayout(1,4));
        actions.add(Valider);
        actions.add(new JLabel(""));
        actions.add(Annuler);
        actions.add(new JLabel(""));
       
        saisie.setLayout(new BorderLayout());
        saisie.add(titre,BorderLayout.NORTH);
        saisie.add(saisir,BorderLayout.CENTER);
        saisie.add(actions,BorderLayout.SOUTH);
       
        saisie.setSize(700, 400);
        saisie.setVisible(true);
               
    }
   
    public void add_team()
    {

        FileWriter writer = null ;
       
        String texte = Name.getUIClassID();
        try{
             writer = new FileWriter("d:/applifoot/fichier.txt", true);
             writer.write(texte,0,texte.length());
        }catch(IOException ex){
            ex.printStackTrace();
        }finally{
          if(writer != null){
             try {
                writer.close();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
          }
        }

    }
   
    }



je pense quue le problème vient de la méthode write de l'objet writer instancié dans la méthode add_team()

Je suis bloqué dans mon travail et j'aimerais que vous m'aidiez
Merci d'avance.

samedi 16 février 2008 à 10:58:28 | Re : problème d'action sur un bouton

DARKSIDIOUS

Membre Club Administrateur CodeS-SourceS
Salut,

Et quel est le problème au juste ? La méthode n'est pas appelée ? Il y a une erreur affichée ?
______________________________________
DarK Sidious

samedi 16 février 2008 à 17:31:04 | Re : problème d'action sur un bouton

tenev911

A mon avis, vu le code source, le bouton doit bien appeller add_team() donc il doit y avoir une erreur au niveau de cette méthode, juste pour chipoter, plutot que new FileWriter("d:/applifoot/fichier.txt", true) je te conseille d'utiliser un objet File pour l'emplacement de ton fichier, ton code sera plus portable, de plus File à une methode exists qui permet de savoir si le fichier existe. Donc changer writer = new FileWriter("d:/applifoot/fichier.txt", true); en :

FileWriter write;
File fichier = new File("d:\applifoot\fichier.txt"); // Tiens je viens de voir que c'est peut-etre le sens des slash qui fait ça mais pas sûr
if(fichier.exists())
{
      writer = new FileWriter(fichier, true);
      ...
}

Comme DarkSidious le dit, un peu plus d'info sur l'erreur que tu as pourrai nous aider :)

samedi 16 février 2008 à 20:27:46 | Re : problème d'action sur un bouton

crazysetup

Oui mais il faut que la création du fichier soit dans un bloc try catch aussi.
Du coup ca ne marche toujours pas.
Voici ma méthode modifiée :

public void add_team()
    {

        FileWriter writer=null ;
        File fichier = new File("d:/applifoot/fichier.txt");
       
        String texte = Name.getUIClassID();
       
        if(fichier.exists())
        try{
            writer = new FileWriter(fichier, true);
             writer.write(texte,0,texte.length());
        }catch(IOException ex){
            ex.printStackTrace();
        }finally{
          if(writer != null){
             try {
                writer.close();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
          }
        }

Et voici l'erreur générée :

Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
    at saisie_equipe.add_team(saisie_equipe.java:136)
    at saisie_equipe$2.actionPerformed(saisie_equipe.java:84)
    at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
    at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
    at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
    at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
    at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
    at java.awt.Component.processMouseEvent(Unknown Source)
    at javax.swing.JComponent.processMouseEvent(Unknown Source)
    at java.awt.Component.processEvent(Unknown Source)
    at java.awt.Container.processEvent(Unknown Source)
    at java.awt.Component.dispatchEventImpl(Unknown Source)
    at java.awt.Container.dispatchEventImpl(Unknown Source)
    at java.awt.Component.dispatchEvent(Unknown Source)
    at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
    at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
    at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
    at java.awt.Container.dispatchEventImpl(Unknown Source)
    at java.awt.Window.dispatchEventImpl(Unknown Source)
    at java.awt.Component.dispatchEvent(Unknown Source)
    at java.awt.EventQueue.dispatchEvent(Unknown Source)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
    at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
    at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    at java.awt.EventDispatchThread.run(Unknown Source)

En fait, le sens de mes slash est correct.
Si vous pouviez voir ce qui cloche ca serait sympa. merci


dimanche 17 février 2008 à 04:13:04 | Re : problème d'action sur un bouton

tenev911

Il faudrai que je sache quel est la ligne 136 NullPointerException disant que généralement tu essaye de faire une opération sur quelque chose qui vaut null donc, en règle général, mal initialisé.
En faisant un copié-collé, j'ai essayé de voir sur quelle ligne je tombe, pas de chance elle est vide, mais proche de :

String texte = Name.getUIClassID();

Je ne connais pas cette méthode, mais peut-être que dans certains cas elle renvoi null. Même si cela m'étonnerai car quand on écrit null avec un writer, ca écrit le String "null", je vois pas pourquoi cette ligne buggerai, je suggererai la que la ligne :

writer.write(texte,0,texte.length());

bug, mais le fichier.exists() semblerai indiquer que ce fichier existe, donc je vois pas pourquoi il y aurai cette erreur

Bref, quel est la ligne 136  ?

PS : Si à l'execution, ton code execute ce qu'il y a apres fichier.exists() alors effectivement, je me suis trompé pour les slash ^^

dimanche 17 février 2008 à 16:37:28 | Problème résolu

crazysetup

Merci tenev, j'ai réussi à résoudre le prolème avec une petite manip : j'ai transféré le contenu du constructeur de saisie_equipe dans une méthode externe à cette classe, puis je l'ai appelée, voici mon code modifié :

JButton Valider = new JButton("Valider");
        Valider.addActionListener(new ActionListener(){
                public void actionPerformed(ActionEvent arg0) {
               
                   
                    File fb = new File("d:/applifoot/"+Name.getText());
                    fb.mkdirs();
                   
                    FileWriter writer=null ;
                    File fichier = new File("d:/applifoot"+Name.getText()+"/fiche.txt");
                   
                   
                    String texte1 = Name.getText();
                    String texte2 = Date.getText();
                    String texte3 = President.getText();
                    String texte4 = Nation.getText();
                    String texte5 = Status.getText();
                    String texte6 = League.getText();
                   
                    String space = "  :                    ";
                    String ret = "\r\n";
                   
                    String text1=name.getText();
                    String text2 = date.getText();
                    String text3 = president.getText();
                    String text4 = nation.getText();
                    String text5 = status.getText();
                    String text6 = league.getText();
                   
                    if(fichier.exists())
                        {
                        fichier.delete();
                   
                   
                        File fich = new File("d:/applifoot"+Name.getText()+"/fiche.txt");
                    try{
                       
                        writer = new FileWriter(fich, true);
                       
                         writer.write("Fiche technique de "+Name.getText()+"\r\n"+"\r\n"+text1+space+texte1+ret+text2+space+texte2+ret+text3+space+texte3+ret+text4+space+texte4+ret+text5+space+texte5+ret+text6+space+texte6);
                     
                    }catch(IOException ex){
                        ex.printStackTrace();
                    }finally{
                      if(writer != null){
                         try {
                            writer.close();
                        } catch (IOException e) {
                            e.printStackTrace();
                        }
                      }
                    }
            }
                    else
                        {
                        File fich = new File("d:/applifoot/"+Name.getText()+".txt");
                        try{
                           
                            writer = new FileWriter(fich, true);
                           
                             writer.write("Fiche technique de "+Name.getText()+"\r\n"+"\r\n"+text1+space+texte1+ret+text2+space+texte2+ret+text3+space+texte3+ret+text4+space+texte4+ret+text5+space+texte5+ret+text6+space+texte6);
                         
                        }catch(IOException ex){
                            ex.printStackTrace();
                        }finally{
                          if(writer != null){
                             try {
                                writer.close();
                            } catch (IOException e) {
                                e.printStackTrace();
                            }
                          }
                        }
                        }
                        }
               
        });

merci encore !

dimanche 17 février 2008 à 16:41:17 | mettre un fichier dans un repertoire

crazysetup

Maintenant j'ai un petit souci :

Comment créer un fichier et le placer à l'intérieur d'un répertoire créé avec mkdirs();



Cette discussion est classé dans : bouton, problème, action, classe, valider


Répondre à ce message

Sujets en rapport avec ce message

Enchainement d'écran [ par Aotearoa ] Ma question va sans doute sembler idiote et mal exprimée, mais que voulez-vous, je débute...J'ai créé une classe Lecture qui lit une base de donnée. D Action sur des boutons contenu dans un tableau [ par Niamorr ] Salut à toi qui va peut etre m'aider,Je suis nouveau sur ce forum, et débutant en java...J'ai un petit problème,J'ai créé un tableau contenant des Jbu Bouton / javabean [ par teltone916 ] Voila j'ai crée un bouton rond, avec effet de lumiere qd on va dessu, etc, avec JBuilder8. En fait j'ai créé un Bean.Pour cela, j'ai heriter de la cla Bouton / bean [ par teltone916 ] Voila j'ai crée un bouton rond, avec effet de lumiere qd on va dessu, etc, avec JBuilder8. En fait j'ai créé un Bean.Pour cela, j'ai heriter de la cla Bouton / bean [ par teltone916 ] Voila j'ai crée un bouton rond, avec effet de lumiere qd on va dessu, etc, avec JBuilder8. En fait j'ai créé un Bean.Pour cela, j'ai heriter de la cla Bouton / bean [ par teltone916 ] Voila j'ai crée un bouton rond, avec effet de lumiere qd on va dessu, etc, avec JBuilder8. En fait j'ai créé un Bean.Pour cela, j'ai heriter de la cla Une fonction javascript specifique pour le bouton valider [ par carmen256 ] J' ai un problème de code . Je voudrai insérer une fonction spécifique dans un bouton valider .Une page html nommé formulaire contient deux champs tex Problème avec le bouton X [ par Stark ] GeneralStarkSalut,J'ai vu dans une des questions du forum que pour enlever le bouton X présent en haut à droite de la fenêtre il faut utilise Problème d’appelle de classe !!! [ par cedicat ] Bonjour,Je cherche un moyen pour appeler la méthode main() d?une classe (à partir d?une autre) sachant que le nom de cette classe se trouve dans une Probleme avec un bouton pause dans un jeu! [ par Nikouf ] Salut!Voila je cré un petit jeu en Java ou je dois déplacer un personnage dans une zonne de dessin avec les fleches du clavier.Il y a des ennemis, ani


Nos sponsors

Sondage...

CalendriCode

Décembre 2008
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode

Téléchargements



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,234 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.