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 :

[JTable] Problème d'insertion


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
    Février 2006
    Messages
    63
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 63
    Par défaut [JTable] Problème d'insertion
    Salut,
    J'ai un probleme avec la fct addRow depuis que j'ai changé DefaultModele par mon propre modele

    Je cree ma classe modele, j'ajoute un "extends DefaultModele". Jusqu'à tout va bien. Je remplace ensuite tous les defaultmodeles par mon nouveau modele. Enfin j'associe le modele crée avec la JTable. Jusqu'ici pas d'erreur!

    Le truc c'est que quand il tente d'ajouter un ligne à la JTable par le biais de "addRow" j'obtiend une exepetion que je catch :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    listfolder - Exception = 0 >= 0;cause null;Stack [Ljava.lang.StackTraceElement;@360be0;localized at 0 >= 0
    Mon programme est construit comme suit:

    Je construit mon interface dans une classe.
    Dans une autre classe, je construit ma JTable que je peux renvoyer par l'intermédaire d'une fct "getJTable".
    Dans une autre classe, je cree le modele avec toutes les méthodes nécessaires!

    J'associe le modele à la JTable dans la classe ou celle-ci est crée. Je peux renvoyer le modele par l'intermediaire d'une fct.

    L'affichage de la JTable se passe bien mais l'ajout ne fonctionne pas (cf. exception).

    Sachez enfin qu'avec un defaultmodel, cette même table fonctionne parfaitement, ajout compris!

    j'ai utilisé le model dvp par un des membres de ce forums :
    http://www.developpez.net/forums/att...7&d=1145880777

    J'initialise la JTable comme suit :
    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
     
    import java.awt.Color;
    import javax.swing.*;
    import javax.swing.table.*;
     
     
    public class JFileTable {
     
        // Instance attributes used in this example
        private    JTable        table;
     
        private    String        columnNames[];
        private    Object        dataValues[][];
     
        private JFileModelTable modele;
     
     
        JFileTable(){
     
            // Create columns
            columnNames = new String[]{"ID", "Fichier", "Chemin", "Type", "Taille"};
            dataValues = new Object[0][5];
     
            // Create a new table instance
            table = new JTable();
     
            modele = new JFileModelTable(columnNames,dataValues);
            table.setModel(modele);
     
            // Configure some of JTable's paramters
            table.setShowHorizontalLines( false );
            table.setRowSelectionAllowed( true );
            table.setColumnSelectionAllowed( false );
     
            //table.getColumnModel().getColumn(0).setPreferredWidth(5);
            table.getColumnModel().getColumn(0).setMaxWidth(35);
            table.getColumnModel().getColumn(0).setMinWidth(30);
     
            table.getColumnModel().getColumn(3).setMaxWidth(90);
            table.getColumnModel().getColumn(3).setMinWidth(40);
     
            table.getColumnModel().getColumn(4).setMinWidth(40);
            table.getColumnModel().getColumn(4).setMaxWidth(150);
     
            // Change the selection colour
            table.setSelectionForeground( Color.white );
            table.setSelectionBackground( Color.lightGray );
        }
     
        public JTable getJTable(){
            return table;
        }
     
        public JFileModelTable getJTableModel(){
            return modele;
        }
     
     
    }
    Dans mon interface j'utilise la JTable avec le code suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
               JFileTable newTable = new JFileTable();
               fileList = newTable.getJTable();//fileList ets de type JTable
               modele = newTable.getJTableModel();// Creation du modele de table
               fileList.addMouseListener(this);
    Enfin pour ajouter une ligne j'execute la commande suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    // AddRowModel = type : private JFileModelTable addRowModel;
    addRowModel.addRow(new String [] {""+addRowModel.getRowCount(),
                                                      roots[i].getName(),roots[i].getPath(),
                                                       new Fichier(roots[i].getPath()).getFileExtention(null).toLowerCase(), 
                                                       Fichier.convertSizeToHuman(roots[i].length())});
    A ce moment j'obtiens une exeption et aucune ligne n'est rajouté!

    Savez vous d'ou vient le probleme. Et sinon le cas echéant, savez vous s'il est possible d'empecher l'edition sans pour autant coder un nouveau model.

    Merci bcp

  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
    , ça été demandé watt mille fois

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    63
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 63
    Par défaut
    j'ai appliqué la méthode décrite, mais il me reste le probleme concernant l'ajout. J'ai donc un peu modifié le post!!

    Merci

    Ca doit venir du modele puisque ldans la procédure ou j'instancie la classe model et o je cree ma JTable, je n'arrive meme pas a jouter de ligne. J'obtiens un exception

    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
     
    Exception in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException: 0 >= 0
        at java.util.Vector.elementAt(Unknown Source)
        at javax.swing.table.DefaultTableModel.justifyRows(Unknown Source)
        at javax.swing.table.DefaultTableModel.insertRow(Unknown Source)
        at javax.swing.table.DefaultTableModel.addRow(Unknown Source)
        at javax.swing.table.DefaultTableModel.addRow(Unknown Source)
        at JFileTable.<init>(JFileTable.java:48)
        at FileFinderUI.createResultPanel(FileFinderUI.java:322)
        at FileFinderUI.<init>(FileFinderUI.java:51)
        at MainInterface$3.actionPerformed(MainInterface.java:128)
        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.AbstractButton.doClick(Unknown Source)
        at javax.swing.plaf.basic.BasicMenuItemUI.doClick(Unknown Source)
        at javax.swing.plaf.basic.BasicMenuItemUI$Handler.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.pumpOneEventForHierarchy(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)

Discussions similaires

  1. Réponses: 3
    Dernier message: 23/05/2008, 14h52
  2. Probléme d'insertion par défault
    Par xavier62 dans le forum SQL
    Réponses: 7
    Dernier message: 28/11/2003, 13h03
  3. [Interbase 7] Problème d'insertion de données
    Par Tuscelan dans le forum InterBase
    Réponses: 12
    Dernier message: 19/11/2003, 22h58
  4. STL : std::set problème avec insert ...
    Par Big K. dans le forum MFC
    Réponses: 13
    Dernier message: 08/11/2003, 01h02
  5. Problème d'insertion avec MySQL
    Par Sonny dans le forum ASP
    Réponses: 13
    Dernier message: 28/08/2003, 13h52

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