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

Composants Java Discussion :

[débutant] rafraichissement JTable + action bouton


Sujet :

Composants Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 37
    Par défaut [débutant] rafraichissement JTable + action bouton
    Bonjour à tous, j'ai un gros problème dans mon projet


    voila, j'ai 2 zones de textes (jTextField1, jTextArea2) et en clikant sur un bouton (jButton3) je voudrait ajouter les String contenus ds mes zones de textes ds un tableu; puis dans un JTable (qui a comme paramètre mon tableau).

    constructeur de ma 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
      public int max;  
     
       public Dicotab()// constructeur vide
       {  super();
          max=50;
          tab=new String[50][2];
     
       }
     
       public Dicotab(int lg)//constructeur
       { 
          max=lg;
          tab=new String [max][2];
       }
    mon main de ma classe JFrame :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
        public static void main(String args[]) {
     
     int m = leDic.max;
     
         Dicotab d = new Dicotab(m);   
     
    JFrame maFrame = new JFrame(d);
    maFrame.setVisible(true); 
     
     
     
          }
    j'aimerais utiliser la valeur (int max) de la classe Dicotab (avec un getter par ex, ou grace à leDic.max),pour qu'à chaque fois que j'ajoute un mot, max augmente de 1; mais ça ne marche pas "non-static variable leDic cannot be referenced from a static context"


    code source du JTable :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
      private void initComponents2(){
     
     
           javax.swing.JTable jTable1 = new javax.swing.JTable(leDic.getTab(), titreColonnes); 
     
     
             jPanel9.add(jTable1);
        }


    voici l'action du bouton :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     private void jButton3ActionPerformed(java.awt.event.ActionEvent evt) {
    String m = jTextField1.getText();
    String d = jTextArea2.getText();
    leDic.ajoute(m, d);
     
     jTextField1.setText("");
     jTextArea2.setText("");
       initComponents2();
     
        }
    voici ma méthode ajouter :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
      public void ajoute(String mot,String def)//ajoute un mot dans le tableau
       {
          int i=0;
     
          while( tab[i][0]!= null)
          {
             i++;
          }
     
                    tab[i][0]=mot;tab[i][1]=def;
                    max++;
          }

    merci

  2. #2
    Expert confirmé
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Par défaut
    Toujours les mêmes histoire de programmation objet

    Dans ta classe dic: max doit être déclarée en private et non en publiques et tu passe par des accesseurs pour la récupérer et en modifier la valeur

    Dans ton main: tu essaye d'accéer à leDic
    alors que le leDic n'est absolument pas instancié (d'ailleurs d'où vient-il?) il est donc normal qu'il te renvoie l'erreur que tu a reçu (je suppose que c'est un objet de type DicoTab déclaré dans ta JFrame, mais je ne peux en être sur). Pour résumer tu ne peux accéder dans une classe qu'à des objets que tu as déclarés, à l'exception du main qui sert à lancer (initialiser) ta classe principale et la lancer basta...

    Pour ta méthode ajouter tu risque probablement d'arriver à des soucis de nullpointerexception, et vu comment est fait ton tableau, tu pourrais parfaitement utiliser une HashMap (conteneur de paire clefs-valeurs) ou deux ArrayList(une contenant les mot et l'autre les définitions associées aux mots) (par contre il est sur que c'est moins évident à utiliser avec une JTable

    Accessoirement pour ta JTable il va falloir que tu prennes des renseignements quant aux TableModel car tu vas certainement vouloir modifier dynamiquement le contenu de la JTable

    Enfin avant tout je t'encourrage à faire un tant soit peu de théorie objet et d'apprentissage du java avant de te lancer tête baissée comme tu le fais, car il est probable que sans ces notions tu vas foncer dans le mur et passer trois ans sur ton prog

    Voici un tutoriel pour bine apprendre Java pour commencer: http://java.developpez.com/cours/
    Un cours de java très bien fait et expliquet bien les notions objet requises pour java

    ++

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 37
    Par défaut
    ok ok je te remercie bcp. je suis en licence 2ème année. cette année je n'ai vrément pas eu de chance, et j'ai eu des profs très mauvais ou tjs absent ... donc je galère trop



    voici le constructeur de ma JFrame :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
     
     
        private   Dicotab leDic; 
     
     
          public JFrame(Dicotab dic) {
     
     
            leDic = dic; 
            initComponents();
            initComponents2();
        }

    et max est bien déclaré en private, donc je vois pas


    oui, ensuite je compte utiliser les Listes chainées, mais je suis encore plus perdu dans ce domaine (mon projet est de faire ce dic avec une implémentation dans un tableau, et une autre avec une liste chainée...voila voila je commence donc par le tableau)

  4. #4
    Expert confirmé
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Par défaut
    Pas exactement si j'en crois le code de ta classe DicoTab

    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 int max; 
     
       public Dicotab()// constructeur vide
       {  super();
          max=50;
          tab=new String[50][2];
     
       }
     
       public Dicotab(int lg)//constructeur
       {
          max=lg;
          tab=new String [max][2];
       }
    La on trouve bien un public int max

    Pour ce qui est des listes chainées pas vraiment besoin d'en coder en java, elles existent déja (toutes les classes descendantes de List donr la plus connue l'ArrayList)

    Ensuite pour ta fonction ajoute je verrais plus quelque chose dans ce style en supposant que lax ait été initialisé à 0 à la création de ta classe
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
      public void ajoute(String mot,String def)//ajoute un mot dans le tableau
     {
         if(max< tab.length){
     
             tab[max][0]=mot;tab[max][1]=def;
             max++;
          } else {
             System.out.println("depassement du tableau");
          }
      }
    et encore je ne suis pas tou

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 37
    Par défaut


    java.lang.NoSuchMethodError: main
    Exception in thread "main"


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
     
    int m = leDic.getMax();
      public static void main(String[] args){
     
     
    Dicotab d = new Dicotab(m);   
    JFrame maFrame = new JFrame(d);
    maFrame.setVisible(true);
        }

    et JFrame.java [259:1] non-static variable m cannot be referenced from a static context
    Dicotab d = new Dicotab(m);
    ^
    1 error


    pffffffffff

Discussions similaires

  1. [débutant] Appeler une action depuis un bouton dans une vue.
    Par Teaniel dans le forum Eclipse Platform
    Réponses: 5
    Dernier message: 11/02/2010, 17h30
  2. [Débutant]Mettre une action sur un bouton
    Par Bindy dans le forum AWT/Swing
    Réponses: 2
    Dernier message: 29/06/2007, 13h28
  3. [VBA-E] Undo après action bouton ne fonctionne pas
    Par TicTacToe dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 26/04/2006, 13h53
  4. Afficher un fond sur une action bouton
    Par lordenzo dans le forum Flash
    Réponses: 6
    Dernier message: 31/03/2006, 13h47
  5. Réponses: 7
    Dernier message: 26/10/2005, 13h54

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