AJout de ligne dans un tableau en fonction de la saisie [Résolu]

Messages postés
119
Date d'inscription
mardi 8 avril 2008
Dernière intervention
22 décembre 2008
- 13 mai 2008 à 22:12 - Dernière réponse :
Messages postés
119
Date d'inscription
mardi 8 avril 2008
Dernière intervention
22 décembre 2008
- 21 mai 2008 à 10:27
Bonjour,

je réalise un formulaire en java grâce à netbeans, et j'ai placé un tableau (jTable) en mode design sur ce formulaire.
Ce tableau est composé de sept colonnes avec les jours de la semaine et une ligne avec la semaine numero 1.
J'ai une zone de text ou on saisi le nombre de semaine désirée. Je voudrais que le nombre de ligne de mon tableau évolu en fonction du nombre de semaines saisie.
Si on saisie 3 dans nombre de semaine le tableau ajoute automatiquement deux lignes correspondant a deux nouvelles semaines.
Si quelqu'un peut me guider et me conseiller je lui en serait reconnaissant.

Merci d'avance.

Cordialement Julien.
Afficher la suite 

Votre réponse

7 réponses

Meilleure réponse
Messages postés
2333
Date d'inscription
samedi 28 février 2004
Dernière intervention
26 juillet 2013
- 14 mai 2008 à 09:45
3
Merci
Salut:

Pour ajouter une ligne à un composant JTable, utilises une des variantes de la méthode addRow() de la classe DefaultTableModel.

[../../j2se6/api/javax/swing/table/DefaultTableModel.html#HTML_TO_HH_98328 javax.swing.table.DefaultTableModel.addRow(java.lang.Object[])]
[../../j2se6/api/javax/swing/table/DefaultTableModel.html#HTML_TO_HH_98327 javax.swing.table.DefaultTableModel.addRo(java.util.Vector)]

DefaultTableModel model = new DefaultTableModel(data, columnNames);
JTable table = new JTable(model);

// Ajouter une nouvelle ligne vide
model.add(new Object[] {});
ou bien
model.add(new Vector());

Comme tu utilises NetBeans, il faut personnaliser la création du composant JTable.

J'ai fait une petit exemple, j'ai vu que le générateur de code utilise déja un DefaultTableModel pour créer le composant de type JTable, donc il te suffira d'écrire tout simplement:

Par exemple tu peux ajouter ce code dans la méthode actionPerformed() d'un ActionListener:

DefaultTableModel model = (DefaultTableModel)table.getModel();
model.addRow(new Object[] {"data", "data", "data"});

Merci Ombitious_Developper 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 87 internautes ce mois-ci

Commenter la réponse de Ombitious_Developper
Meilleure réponse
Messages postés
2333
Date d'inscription
samedi 28 février 2004
Dernière intervention
26 juillet 2013
- 15 mai 2008 à 21:06
3
Merci
Salut:

"Je voudrais que lorsque l'on entre un nombre de semaine, il y est un nombre de ligne de tableau équivalent qui apparaissent."

// Tableau
final JTable table = ...;

// Le nombre de semaines est saisit dans ce champs
final JTextField inputField = ...;
inputField.setInputVerifier(new InputVerifier() {
    public boolean verify(JComponent comp) {
       JTextField field = (JTextField)comp;
       return field.getText().matches("[1-9]*");
    }
});

// Action
JButton submit = new JButton("Submit");
submit.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent ae) {
          String text = inputField.getText();
          if (text.equals("")) {
                text = "0";
          }
          int count = new Integer(text).intValue();
          DefaultTableModel model = (DefaultTableModel)table.getModel();
          for (int i = 0; i < count; ++i) {
                 model.addRow(new Object[] {"data", "data", "data", "data", "data", "data", "data"});
          }
    }
});

Note: si les variables table et inputField sont deux attributs de ta classe alors ce n'est pas nécessaire d'ajouter le modificateur final, si ce n'est pas le cas alors le modificateur final est nécessaire.

Merci Ombitious_Developper 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 87 internautes ce mois-ci

Commenter la réponse de Ombitious_Developper
Meilleure réponse
Messages postés
2333
Date d'inscription
samedi 28 février 2004
Dernière intervention
26 juillet 2013
- 15 mai 2008 à 21:09
3
Merci
Salut:

Petite rectification

// Le nombre de semaines est saisit dans ce champs
final JTextField inputField = ...;
inputField.setInputVerifier(new InputVerifier() {
    public boolean verify(JComponent comp) {
       JTextField field = (JTextField)comp;
       try {
             Integer.parseInt(field.getText());
             return true;
       } catch (NumberFormatException e) {
             return false;
       }
    }
});

Merci Ombitious_Developper 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 87 internautes ce mois-ci

Commenter la réponse de Ombitious_Developper
Meilleure réponse
Messages postés
2333
Date d'inscription
samedi 28 février 2004
Dernière intervention
26 juillet 2013
- 20 mai 2008 à 20:14
3
Merci
Salut:

Tout dépend de la façon avec laquelle tu veux valider le nombre de lignes saisies par l'utilisateur.

Tu peux par exemple ajouter un bouton pour valider la saisie de l'utilisateur.

Ou bien tu peux ajouter un KeyListener au champs de saisie qui une fois on appuie sur entrée il exécute le code.

Comme tu peux combiner ces deux styles ce qui est encouragé.

Créer une méthode quelconque:

private void createRows() {
        String text = inputField.getText();
        if (text.equals("")) {
                text = "0";
        }
        int count = new Integer(text).intValue();
        DefaultTableModel model = (DefaultTableModel)table.getModel();
        for (int i = 0; i < count; ++i) {
              model.addRow(new Object[] {"data", "data", "data", "data", "data", "data", "data"});
        }
}

public class Main extends javax.swing.JFrame {

    // ...

    // Variables declaration - do not modify
    private javax.swing.JTextField field;
    private javax.swing.JButton submitButton;
    private javax.swing.JLabel jLabel1;
    private javax.swing.JLabel jLabel2;
    private javax.swing.JScrollPane jScrollPane1;
    private javax.swing.JTable table;
    // End of variables declaration
}

1. Attacher un ActionListener au bouton de validation:

submitButton.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent ae) {  
        createRows();
    }
});

2. Attacher un KeyListener au champs de saisie:

field.addKeyListener(new KeyAdapter() {
    public void keyPressed(KeyEvent e) {
         if (e.getKeyCode() == VK_ENTER) {
                createRows();
         }
    }
});

Merci Ombitious_Developper 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 87 internautes ce mois-ci

Commenter la réponse de Ombitious_Developper
Messages postés
119
Date d'inscription
mardi 8 avril 2008
Dernière intervention
22 décembre 2008
- 15 mai 2008 à 14:59
0
Merci
Re,

je te remerci dans un premier temps pour l'attention que tu à porté à ma question. En fait si tu veux j'ai une zone de texte jTextField1 ou je peut saisir un nombre de semaine et j'ai placer un tableau avec plusieurs colonnes et une ligne de base qui correspond a une semaine obligatoire.
Je voudrais que lorsque l'on entre un nombre de semaine, il y est un nombre de ligne de tableau équivalent qui apparaissent. Si on entre un cycle de 3 semaines, mon tableau fait apparaître deux lignes supplémentaire.
Comme tu peut le constater je suis débutant en java et j'avous que cela me dépasse un peu. J'ai essayer ta solution mais je n'arrive pas à la lier à la saisi de la zone de texte.

Merci de ton aide.

A plus tard.

Julien.^^^^
Commenter la réponse de Beberto56
Messages postés
119
Date d'inscription
mardi 8 avril 2008
Dernière intervention
22 décembre 2008
- 20 mai 2008 à 11:55
0
Merci
Re ombitious tout d'abord merci pour tes explications , mais le problème c'est que j'utilise le panel design de netbeans et donc je te met le code test que j'ai mis en place :

mon tableau s'appel table
mon champs de texte s'appel field

voila ou j'en suis cad au début je n'arrive pas a adapter ton code peux tu modifier le mien stp je me perd dans les noms et les codes (arf ces débutants^^)

package testevoltablo;
    public class Main extends javax.swing.JFrame {
        public Main()
        {
            initComponents();
        }

    (Generated code)

    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {

          //Zone d'action sur le bouton ajouter
         //ton bout de code numero1 
       /*String text = inputField.getText();
          if (text.equals(""))
          {
                text = "0";
          }
          int count = new Integer(text).intValue();
          DefaultTableModel model = (DefaultTableModel)table.getModel();
          for (int i = 0; i < count; ++i)
          {
                 model.addRow(new Object[] {"data", "data", "data", "data", "data", "data", "data"});
          }*/
       
    }
    private void fieldActionPerformed(java.awt.event.ActionEvent evt) {

        /*je ne sais pas ou placer tes bouts de codes*/
       
        //ton bout de code numero2
        /*field.setInputVerifier(new InputVerifier())
        {
            public boolean verify(JComponent comp)
            {
                field = (JTextField)comp;
                try
                {
                    Integer.parseInt(field.getText());
                    return true;
                 }
                catch (NumberFormatException e)
                {
                    return false;
                }
            }
        }*/
       
    }
   
    public static void main(String args[]) {
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run()
            {
                new Main().setVisible(true);
            }
        });
    }
   
    // Variables declaration - do not modify
    private javax.swing.JTextField field;
    private javax.swing.JButton jButton1;
    private javax.swing.JLabel jLabel1;
    private javax.swing.JLabel jLabel2;
    private javax.swing.JScrollPane jScrollPane1;
    private javax.swing.JTable table;
    // End of variables declaration
   
}

Excuse moi si je te demande cela mais je ne vois pas le bout et je suis désespéré. En tous cas je te remercis.

++ Julien.
Commenter la réponse de Beberto56
Messages postés
119
Date d'inscription
mardi 8 avril 2008
Dernière intervention
22 décembre 2008
- 21 mai 2008 à 10:27
0
Merci
Merci Ombotious sa fonctionne^^

ouf tu m'as enlever une belle épine du pied

++
Commenter la réponse de Beberto56

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.