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

AWT/Swing Java Discussion :

Arraylist et jxtable ?


Sujet :

AWT/Swing Java

  1. #1
    Membre confirmé
    Inscrit en
    Février 2007
    Messages
    162
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 162
    Par défaut Arraylist et jxtable ?
    Salut, j'ais un arraylist<String[]> et j'aimerais le mettre dans un model pour ma jxtable de telle façon que quand je modifie ma arraylist, la jxtable prennent les changements en comptes...
    Je n'arrive pas a trouver de bons exemple sur le net...
    Avez vous une méthode pour le faire ou un lien ?

    Ou vaut il mieux utiliser un vecteur ?

    Merci d'avance

  2. #2
    Membre chevronné
    Avatar de mhamedbj
    Profil pro
    Inscrit en
    Février 2007
    Messages
    403
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 403
    Par défaut
    soit tu ajoute un écouteur (listener) sur tes données, soit tu rafraichit la table a chaque fois que tu fait un changement !

  3. #3
    Membre confirmé
    Inscrit en
    Février 2007
    Messages
    162
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 162
    Par défaut
    Je me suis mal exprimé,

    j'ais un arraylist<String[]> et j'aimerais le mettre dans un model pour ma jxtable de telle façon que quand je modifie ma arraylist, la jxtable prennent les changements en comptes...
    Mais je n'y arrive pas...Se n'est pas un problème de listener, je sui bloqué avant...
    C'est a dire que :

    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
    16
    17
     
    ArrayList<Object[]> data=new ArrayList<Object[]>(); 
     
    //on ouvre le fichier data
    BufferedReader br = new BufferedReader(new FileReader(System.getProperty("user.dir")+ File.separator + "data"));
     
    String text = "";
     
    //On remplit la arraylist
    while((text = br.readLine())!=null){
           data.add(text.split("\u00a9"));             
    }
     
    br.close();
     
    String[] colonnes= {"1","2","3"};     
    majxtable.setModel(new javax.swing.table.DefaultTableModel(data, colonnes));
    Me renvoie l'erreure suivante sous netbeans :



    Je ne comprends pas d'ou vient cette erreure
    Et je n'arrive pas a avancer. C'est pour ça que je vous ais demandé si vous avié un bon tuto !

  4. #4
    Membre Expert Avatar de guigui5931
    Profil pro
    Chef de projet NTIC
    Inscrit en
    Avril 2006
    Messages
    1 667
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 667
    Par défaut
    LE problème c'est qu'il n'existe pas de contructeur de DefaultTableModel comme tu l'écris( une ArrayList et un tableau de Stringà. Il te faut soit 2 Vector ou 2 tableau. Consulte la javadoc pour plus de détail.

  5. #5
    Membre confirmé
    Inscrit en
    Février 2007
    Messages
    162
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 162
    Par défaut
    ok je vais voir du côté des vecteurs, j'utilisais le arraylist parceque j'ais vu quelque part que les vecteurs n'étaient si possible plus a utiliser car dépassé.

  6. #6
    Membre confirmé
    Inscrit en
    Février 2007
    Messages
    162
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 162
    Par défaut
    Question ? est t'il préférable d'utiliser add ou addelement pour ajouter des données dans mon vecteur ?

  7. #7
    Rédacteur
    Avatar de eclesia
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    2 111
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 111
    Par défaut
    n'utilisez plus le vector.

    voila un model avec des arraylist (il est pour jtable a l'origine)
    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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
     
    class TableModel extends AbstractTableModel {
     
    	private static final long serialVersionUID = 1;
            private String[] columnNames = { "Nom", "Prenom", "Montant" };
            private ArrayList<ArrayList<Object>> data = new ArrayList<ArrayList<Object>>();
     
     
            public TableModel( ArrayList<ArrayList<Object>> dat, String[] cols){
            	super();
            	columnNames = cols;
            	data = dat;
            	}
     
            public TableModel( ArrayList<ArrayList<Object>> dat){
            	super();
            	data = dat;
            	}
     
            public void misajour( ArrayList<ArrayList<Object>> dat){
            	data = dat;
            	}
     
            public int getColumnCount() {
                return columnNames.length;
            	}
     
            public int getRowCount() {
                return data.size();
            	}
     
            public void setColumn(String[] column){
            	columnNames = column;
            	}
     
            public String getColumnName(int col) {
                return columnNames[col];
            	}
     
            public Object getValueAt(int row, int col) {
            	ArrayList<Object> v = data.get(row);
                return v.get(col);
            	}
     
            public Class<?> getColumnClass(int c) {
                return getValueAt(0, c).getClass();
            	}
     
            public boolean isCellEditable(int row, int col) {
            	return false;
            	}
     
            public void setValueAt(Object value, int row, int col) {
            	ArrayList<Object> v = data.get(row);
            	v.set(col, value);
                fireTableCellUpdated(row, col);
            	}
     
        }

  8. #8
    Membre confirmé
    Inscrit en
    Février 2007
    Messages
    162
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 162
    Par défaut
    merci eclesia, mais peux tu me dire ce que donnerais mon code dans ce cas, je débute en java, et je ne vois pas ce que je peux faire avec cette classe...

    J'ai ajouté cette classe à mon projet mais aprés ?


    en plus je ne comprends pas ce truc là : ArrayList<ArrayList<Object>>
    est ce que ça marcherais si je remplace ça par ArrayList<String[]> ?

    J'ai testé ça :


    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
    16
    17
     
    ArrayList<Object[]> data=new ArrayList<Object[]>(); 
     
    //on ouvre le fichier data
    BufferedReader br = new BufferedReader(new FileReader(System.getProperty("user.dir")+ File.separator + "data"));
     
    String text = "";
     
    //On remplit la arraylist
    while((text = br.readLine())!=null){
           data.add(text.split("\u00a9"));             
    }
     
    br.close();
     
    String[] colonnes= {"1","2","3"};     
    majxtable.setModel(new TableModel(data, colonnes));
    Mais ça ne marche toujours pas, j'ai la même erreure.

  9. #9
    Membre confirmé
    Inscrit en
    Février 2007
    Messages
    162
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 162
    Par défaut
    Bon alors j'ais modifié la classe comm ceci :

    Et ça marche merci a tous !


    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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
     
     
    package projetjava;
     
    import java.util.ArrayList;
    import javax.swing.table.AbstractTableModel;
     
    /**
     *
     * @author alexis
     */
    public class TableModel extends AbstractTableModel {
     
    	private static final long serialVersionUID = 1;
            private String[] columnNames = { "Nom", "Prenom", "Montant" };
            private ArrayList<String[]> data = new ArrayList<String[]>();
     
     
            public TableModel( ArrayList<String[]> dat, String[] cols){
            	super();
            	columnNames = cols;
            	data = dat;
            	}
     
            public TableModel( ArrayList<String[]> dat){
            	super();
            	data = dat;
            	}
     
            public void misajour( ArrayList<String[]> dat){
            	data = dat;
            	}
     
            public int getColumnCount() {
                return columnNames.length;
            	}
     
            public int getRowCount() {
                return data.size();
            	}
     
            public void setColumn(String[] column){
            	columnNames = column;
            	}
     
            public String getColumnName(int col) {
                return columnNames[col];
            	}
     
            public Object getValueAt(int row, int col) {
            	String[] v = data.get(row);
                    return v[col];
     
            	}
     
            public Class<?> getColumnClass(int c) {
                return getValueAt(0, c).getClass();
            	}
     
            public boolean isCellEditable(int row, int col) {
            	return false;
            	}
     
            public void setValueAt(String value, int row, int col) {
            	String[] v = data.get(row);
            	v[col] = value;
                fireTableCellUpdated(row, col);
            	}
     
        }
    Ensuite, j'ai mis ça dans mon main.java :

    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
    16
    17
    18
     
     
    ArrayList<String[]> data=new ArrayList<String[]>(); 
     
    //on ouvre le fichier data
    BufferedReader br = new BufferedReader(new FileReader(System.getProperty("user.dir")+ File.separator + "data"));
     
    String text = "";
     
    //On remplit la arraylist
    while((text = br.readLine())!=null){
           data.add(text.split("\u00a9"));             
    }
     
    br.close();
     
    String[] colonnes= {"1","2","3"};     
    majxtable.setModel(new TableModel(data, colonnes));

  10. #10
    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
    Juste évites d'appeler ton model TableModel, c'est le nom de l'interface de base des modeles de jtable

  11. #11
    Membre confirmé
    Inscrit en
    Février 2007
    Messages
    162
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 162
    Par défaut
    Oui tout a fait, je trouvais ça bizarre que l'on m'ais donné cette classe avec ce nom, je vais le changer !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 6
    Dernier message: 19/07/2007, 13h07
  2. [info]arrayList ou Vector
    Par schousso dans le forum Collection et Stream
    Réponses: 3
    Dernier message: 12/05/2004, 15h47
  3. [info]ArrayList
    Par schousso dans le forum Collection et Stream
    Réponses: 7
    Dernier message: 06/05/2004, 11h44
  4. [Fichier] Ajout des lignes de doc dans arraylist
    Par 3adoula dans le forum Entrée/Sortie
    Réponses: 9
    Dernier message: 29/04/2004, 22h41
  5. [ STRUTS ][ JSP ][ ArrayList] un lien pour trier
    Par LoulouFifi dans le forum Servlets/JSP
    Réponses: 7
    Dernier message: 03/02/2004, 17h24

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