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 :

Rafraîchir un jtable


Sujet :

Composants Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    65
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Août 2006
    Messages : 65
    Par défaut Rafraîchir un jtable
    Bonjour,
    Voila j'ai un jtable qui est affiché au chargement de mon applet, j’ai crée un listner pour ce jtable a fin de pouvoir supprimer des lignes, j'ai essayé de rafraîchir le jTable avec table3.setModel(defaultTable); après la suppression d’une ligne mais ça marche pas aussi est ce que je dois initialisé l'emplacement de ma table a chaque fois que j'invoque la méthode setModel(defaultTable);?

    Voici l’exception que j’ai : Exception in thread "AWT-EventQueue-2" java.lang.ArrayIndexOutOfBoundsException: 0 >= 0
    at java.util.Vector.elementAt(Unknown Source)

  2. #2
    Membre expérimenté Avatar de Amine_sas
    Profil pro
    Étudiant
    Inscrit en
    Juin 2005
    Messages
    245
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2005
    Messages : 245
    Par défaut
    Salut,
    Citation Envoyé par dellys2 Voir le message
    Bonjour,
    Voila j'ai un jtable qui est affiché au chargement de mon applet, j’ai crée un listner pour ce jtable a fin de pouvoir supprimer des lignes, j'ai essayé de rafraîchir le jTable avec table3.setModel(defaultTable); après la suppression d’une ligne mais ça marche pas aussi est ce que je dois initialisé l'emplacement de ma table a chaque fois que j'invoque la méthode setModel(defaultTable);?
    La methode setModel() ne doit etre appelée qu'une seule fois sauf si tu changes de modèle pour ta table.
    Voici l’exception que j’ai : Exception in thread "AWT-EventQueue-2" java.lang.ArrayIndexOutOfBoundsException: 0 >= 0
    at java.util.Vector.elementAt(Unknown Source)
    Envoies nous le bout de code qui génère cette exception.

    A+.

  3. #3
    Membre éclairé Avatar de leminipouce
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2004
    Messages
    754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Janvier 2004
    Messages : 754
    Par défaut
    A priori, j'aurais tendance à penser qu'à un moment ou un autre tu vide ton model et tu essaies de redessiner ton arbre à ce moment là. Do'ù le ArrayIndexOutOfBounds. Tu as une taille de zéro pour ton arbre...

    Envoies le code, pour voir...

  4. #4
    Membre confirmé Avatar de AliJava
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2007
    Messages
    184
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2007
    Messages : 184
    Par défaut [JTable] et le rafrichissement aprés l'ajout et suppression
    Bonjour,
    je me permet de poster mon souci ici puisque ça rejoint un pti peu le mien.
    voila ce que je veux faire c'est pouvoir ajouter des lignes : pour cela le bouton addCopy : ajoute une copie de la derniere ligne à la fin de JTable si celle ci est pleine.
    add: ajoute une ligne vide toujours à la fin
    del : supprime toujours le dernier element.
    jusqu'a la ca marche bien mais quand je tri les lignes je perd completement l'ordre de mes lignes du coup j'ajoute plus et je supprime plus la ou je veux.
    En plus de tout ça, la regle est que toute les cellules au depart ne sont pas editables sauf celles de la derniere colonnes et pour toute autre ligne ajoutée(copie ou vide) les toutes cellules sont editables, et ça c mon second souci.
    je me ramene pas qu'avec des problemes mais j'ai beau chercher et j'ai trouvé des solutions comme :
    fireTableCellUpdated(row, col);
    fireTableDataChanged();
    mais malheuresement je suis novice avec Jtable.
    voici et franchement merci bcp (et oauiii c la periode des proj mdrr)
    voici le code source : (je suis au TOUT debut mdrr)
    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
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
     
    public class Test extends javax.swing.JFrame {
    	private JScrollPane jscrollp;
    	private JTable table;
    	private JPanel jp;
    	private int CountRowsInit;
    // le model
    	DefaultTableModel model = new DefaultTableModel() {
    		public boolean isCellEditable(int row, int col) { // OK pour abstract
    			fireTableCellUpdated(row, col);
    			fireTableDataChanged();
    			if (row < CountRowsInit)
    				return (col < (table.getColumnCount() - 1)) ? false : true;
    			return true;
    		}
     
    	};
    	Object[][] cellData = {
    			{ "1-1", "1-2", "1-3", "1-4", "1-5","1-6" },
    			{ "2-1", "1-2", "1-3", "1-4", "1-5","1-6" },
    			{ "3-1", "1-2", "1-3", "1-4", "1-5","1-6" },
    			{ "4-1", "1-2", "1-3", "1-4", "1-5","1-6" },
    			{ "5-1", "1-2", "1-3", "1-4", "1-5","1-6" },
    			{ "6-1", "1-2", "1-3", "1-4", "1-5","1-6" }};
    	String[] columnNames = { "col1", "col2", "col3", "col4", "col5", "col6" };
     
    	public Test() {
    		super("Table");
    		// Create a table with initial data
    		Vector<Object> rowData = new Vector<Object>();
    		initDataInTab(rowData, cellData);
    		Vector<String> columnNamesV = new Vector<String>(Arrays
    				.asList(columnNames));
     
    		table = new JTable(model);
    		model.setDataVector(rowData, columnNamesV);
    // pour le tri !!!
    		table.setAutoCreateRowSorter(true);
    		CountRowsInit = cellData.length;
    		jscrollp = new JScrollPane(table);
    		jp = new JPanel();
    		// Create an action
    		Action actionAdd = new AbstractAction("addCopy") {
    			private static final long serialVersionUID = 1L;
     
    			// This method is called when the button is pressed
    			public void actionPerformed(ActionEvent evt) {
    				if (table.getRowCount() > 0) {
    					/* Pour ajouter une copy ligne avec des données connus */
    					model.insertRow(0, copyRowAt(table.getRowCount() - 1));
    					printDebugData(table);
    				} else {
    					model.addRow(emptyRow());
    					printDebugData(table);
    				}
    			}
    		};
    		Action actionDel = new AbstractAction("Del") {
    			private static final long serialVersionUID = 1L;
     
    			// This method is called when the button is pressed
    			public void actionPerformed(ActionEvent evt) {
    				if (table.getRowCount() != 0) {
    					model.removeRow(table.getRowCount() - 1);
    					printDebugData(table);
    				}
    			}
    		};
    		Action actionEmp = new AbstractAction("Emp") {
    			private static final long serialVersionUID = 1L;
     
    			// This method is called when the button is pressed
    			public void actionPerformed(ActionEvent evt) {
    				model.insertRow(table.getRowCount(), emptyRow());
    				printDebugData(table);
    			}
    		};
    		// Create the button
    		JButton buttonAdd = new JButton(actionAdd);
    		JButton buttonDel = new JButton(actionDel);
    		JButton buttonEmp = new JButton(actionEmp);
    		jp.add(buttonAdd);
    		jp.add(buttonDel);
    		jp.add(buttonEmp);
    		jp.setOpaque(true);
    		jp.add(jscrollp, BorderLayout.CENTER);
    		getContentPane().add(jp);
    		setDefaultCloseOperation(EXIT_ON_CLOSE);
    		setVisible(true);
    		setBounds(100, 100, 500, 500);
    	}
     
    	/* transforme le tableau cellData en un tableau de vecteur -d'objet rowData- */
    	private void initDataInTab(Vector<Object> rowData, Object[][] cellData) {
    		for (int i = 0; i < cellData.length; i++) {
    			Vector<Object> colData = new Vector<Object>(Arrays
    					.asList(cellData[i]));
    			rowData.add(colData);
    		}
    	}
     
    	private Vector<Object> copyRowAt(int row) {
    		Vector<Object> data = model.getDataVector();
    		Vector<Object> copy = (Vector<Object>) data.elementAt(row);
    		copy = (Vector<Object>) copy.clone();
    		return copy;
    	}
     
    	private Vector<Object> emptyRow() {
    		Vector<Object> ligneVide = new Vector<Object>();
    		for (int i = 0; i < table.getRowCount(); i++)
    			ligneVide.add(" ");
    		return ligneVide;
    	}
     
    	private void printDebugData(JTable table) {
    		int numRows = table.getRowCount();
    		int numCols = table.getColumnCount();
    		javax.swing.table.TableModel model = table.getModel();
     
    		for (int i = 0; i < numRows; i++) {
    			System.out.print("    row " + i + ":");
    			for (int j = 0; j < numCols; j++) {
    				System.out.print("  " + model.getValueAt(i, j));
    			}
    			System.out.println();
    		}
    		System.out.println("--------------------------");
    	}
     
    	/**
             * Auto-generated main method to display this JFrame
             */
    	public static void main(String[] args) {
    		Test inst = new Test();
    		inst.setVisible(true);
    	}
     
    }
    j'espere avoir ete le plus clair possible.
    à vous.
    merci

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    65
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Août 2006
    Messages : 65
    Par défaut
    Bonjour a tous
    Voila pour la création de mon jtable avec les donnés de départ,que est ce que je dois maitre comme code quand je clique sur le bouton pour rafraîchir ma jtable SVP ?


    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
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
     try {
     
              String  sql = "SELECT  a.id,b.Produit as Désignation,a.qte as Quantité_demandée FROM commandes a,items b where a.id_prod=b.id and month(a.rdate) =(select month(curdate())  from dual) order by rdate ";
     
                              Statement stmt = connec.createStatement();
                               ResultSet rs = stmt.executeQuery( sql );
                               ResultSetMetaData md = rs.getMetaData();
                               int columns = md.getColumnCount();
     
     
     
                               for (int i = 1; i <=  3; i++)
                                {
                                   columnNames1.addElement( md.getColumnName(i) );
     
                                }
     
     
                                 //Get row data
     
     
     
                                while (rs.next())
                                {
                                    Vector row = new Vector(columns);
     
                                    for (int i = 1; i <= 3; i++)
                                 {
                                       row.addElement( rs.getObject(i) );
                                 }
     
                                 data1.addElement( row );
                                }
     
                                rs.close();
                                stmt.close();
                                connec.close();
     
     
     
                            }
                            catch(Throwable exception)
                            {
     
     
                            System.out.println(exception);
                           JOptionPane.showMessageDialog(null, "Erreur : "+exception);
                            }
     
     
     
                              DefaultTableModel defaultTable = (DefaultTableModel)table3.getModel();
                                    defaultTable = new DefaultTableModel(data1,columnNames1);
                                      System.out.print("data de la table :"+data2);
     
     
                                  table3.setModel(defaultTable);
     
     
     
        jPanel10.add(jButton2, null);
        jPanel10.add(jButton5, null);
        Items.getContentPane().add(jPanel11, null);
        jPanel11.add(jLabel7, null);
        jPanel11.add(jTextField5, null);
        jPanel11.add(jButton4, null);
        jPanel11.add(jCheckBox1, null);
        jPanel11.add(jTextField6, null);
        JScrollPane scrollane3 = new JScrollPane(table3 );
     
     
                          scrollane3.getViewport().add(table3);
     
                                  table3.setBorder(BorderFactory.createRaisedBevelBorder());
            // 5, 20, 495, 30
                                scrollane3.setBounds(new Rectangle(1, 5, 420, 233));
     
     
     
                     TableColumn column = null;
     
                     for (int i = 0; i < 2; i++) {
     
                     column = table3.getColumnModel().getColumn(i);
                           if (i == 0) {
                           column.setPreferredWidth(5); 
     
     
                           }
                            if (i == 1) {
                                column.setPreferredWidth(200);
                            }
                            if (i == 2) {
                              column.setPreferredWidth(10);
                            }
     
     
                            ListSelectionModel rowSM3 = table3.getSelectionModel();
     
     
     rowSM3.addListSelectionListener(new ListSelectionListener() {
     
     public void valueChanged(ListSelectionEvent e) {
     
     
     if (e.getValueIsAdjusting()) return;
     
     ListSelectionModel lsm =
      (ListSelectionModel)e.getSource();
     if (lsm.isSelectionEmpty()) {
     
     } else {
      int selectedRow = lsm.getMinSelectionIndex();
     
      String refarticle=((table3.getValueAt(table3.getSelectedRow(),0))).toString();
     
        System.out.println("valeurde lacellule listner2"+refarticle );
     
        id = refarticle ;
      System.out.println(selectedRow );
     }
     }
    });
     
     
     
     }
     
     table3.repaint();
     
         jPanel9.add(scrollane3);
        jPanel9.add(jPanel10, null);

  6. #6
    Membre éclairé Avatar de mouss4rs
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    884
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 884
    Par défaut
    salut,

    as tu trouvé depuis le temps comment rafraichir la JTable?
    c'est vrai que je galère moi aussi

    merci

Discussions similaires

  1. Rafraîchir donnée JTable
    Par totot dans le forum Composants
    Réponses: 0
    Dernier message: 18/05/2015, 19h31
  2. Rafraîchir une JTable
    Par dharkan dans le forum Composants
    Réponses: 5
    Dernier message: 13/09/2011, 15h00
  3. [SWING]jTable + Focus
    Par chady dans le forum Composants
    Réponses: 5
    Dernier message: 27/02/2003, 14h51
  4. JBuilder7 & JTable Colonne alignement
    Par Tonton Luc dans le forum JBuilder
    Réponses: 5
    Dernier message: 06/11/2002, 17h32
  5. Réponses: 9
    Dernier message: 12/08/2002, 07h38

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