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

 Java Discussion :

[JTABLE] Besoin de votre aide SVP


Sujet :

Java

  1. #1
    Membre expert
    Avatar de vpourchet
    Homme Profil pro
    Integrateur Systemes & Virtualisation
    Inscrit en
    Avril 2008
    Messages
    1 159
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Integrateur Systemes & Virtualisation
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2008
    Messages : 1 159
    Points : 3 756
    Points
    3 756
    Par défaut [JTABLE] Besoin de votre aide SVP
    Voila dans mon programme sur lequel je planche actuellement je dois réaliser une JFrame qui permet à l'utilisateur de saisir des informations.

    J'ai trouvé sur le net un impr'ecran d'une frame équivalente à celle que je veut faire :





    /!\ petite précision : le nombre de colonnes et le nombre de lignes sont fonction d'un précédent choix de l'utilisateur et sont donc dynamiques !


    la question est la suivante :

    à votre avis dois-je faire ceci avec un JTable ?
    - la partie du haut étant différente du reste ça risque d'être dur

    dois je faire la partie du bas (les lignes qui commence a 1) avec un jtable et le reste avec des composants dans des JPanels ?

    dois je tout faire en JPanel ?


    ce qui est dur c est que je débute en interfaces graphiques alors ça risque d'être compliqué de faire un Jtable vous ne pensez pas ?

    autrement j avais pensé à faire un objet qui extends Jcomponent et qui représenterait juste une des lignes ...

    je devrai bien évidement faire des traitements sur chaque champ texte que l'utilisateur aura modifié!


    qu'en dites vous ?



    en vous remerciant !

    Valus
    Mon Site Web consacré à la Virtualisation

    VMware vExpert 2013/2012, VMware Certified Professionnal (VCP510), VMware Technical Sales Professional, VMware Sales Professionnal
    Veeam Technical Sales Professional, Veeam Sales Professional
    Citrix Certified Sales Professional
    DataCore Sales Certified Professional

  2. #2
    Membre chevronné

    Homme Profil pro
    Architecte logiciel
    Inscrit en
    Novembre 2006
    Messages
    1 252
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte logiciel
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 252
    Points : 1 954
    Points
    1 954
    Par défaut
    Ca peut se gérer full JTable. Bien que le rendu et l'edition varie entre l'entête et le reste des lignes, il est tout à fait possible de le gérer dans le CellEditor et CellRenderer. Tu peux également fournir un TableModel qui suit la typologie des éléments édités.

    L'intérêt d'un JTable s'impose lorsque la quantité d'info est telle qu'instancier autant de widgets serait trop lourd. Quelle est la volumétrie ?

  3. #3
    Membre expert
    Avatar de vpourchet
    Homme Profil pro
    Integrateur Systemes & Virtualisation
    Inscrit en
    Avril 2008
    Messages
    1 159
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Integrateur Systemes & Virtualisation
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2008
    Messages : 1 159
    Points : 3 756
    Points
    3 756
    Par défaut
    a vue de nez je dirais environ 8 lignes (comme sur le screenshot), pour jusqu'a 9 ou 10 colonnes !

    je me demandais quelle classe il fallait définir pour faire une ligne 'personnalisée' (avec mes texfields et boutons) y'a une classe TreeLine a creer ou quoi ?

    merci de ta réponse !
    Mon Site Web consacré à la Virtualisation

    VMware vExpert 2013/2012, VMware Certified Professionnal (VCP510), VMware Technical Sales Professional, VMware Sales Professionnal
    Veeam Technical Sales Professional, Veeam Sales Professional
    Citrix Certified Sales Professional
    DataCore Sales Certified Professional

  4. #4
    Membre chevronné

    Homme Profil pro
    Architecte logiciel
    Inscrit en
    Novembre 2006
    Messages
    1 252
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte logiciel
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 252
    Points : 1 954
    Points
    1 954
    Par défaut
    Pas très compliqué à faire. Je te conseille de lire ceci:

    http://72.5.124.55/docs/books/tutori...nts/table.html

    Notamment la partie " Concepts: Editors and Renderers". N'hésite pas si tu as des questions.

  5. #5
    Membre expert
    Avatar de vpourchet
    Homme Profil pro
    Integrateur Systemes & Virtualisation
    Inscrit en
    Avril 2008
    Messages
    1 159
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Integrateur Systemes & Virtualisation
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2008
    Messages : 1 159
    Points : 3 756
    Points
    3 756
    Par défaut
    j'avais déja lu ce tuto !

    l'ennui c'est que moi j'ai pas vraiement d'expérience la dedans et je développe sous netBeans.

    j'ai codé un TableModel

    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
    public class TabModel extends AbstractTableModel{
        Object donnees[][];
        String titres[];
     
        public TabModel(Object donnees[][], String titres[]) {
          this.donnees = donnees;
          this.titres = titres;
        }
        public int getRowCount() {
            return donnees.length;
        }
     
        public int getColumnCount() {
            return donnees[0].length;
        }
     
        public Object getValueAt(int rowIndex, int columnIndex) {
            return donnees[rowIndex][columnIndex];
        }
        public String getColumnName(int col){
     
             return titres[col];
     
        }
     
    }
    et je l'attribue à mon JTree.

    je souhaite simplifier la chose, disons que sur le screen que je vous ai montré, les labels (IFN-g,TNF-a,il-10,il-5) seront mes intitulés de colonnes . de plus il n'y aura pas de boutons a coté des zones de saisie.

    est-ce qu'une ame charitable pourrait me donner un petit bout de code ou quelques conseils ? je suis totalement perdu.

    le tableau aura une forme simple : les deux premieres colonnes sont non saisisables non séléctionnables et les autres ne contiennent que des zones de textes.

    quelqu'un peut me guider svp ?

    merci beaucoup
    Mon Site Web consacré à la Virtualisation

    VMware vExpert 2013/2012, VMware Certified Professionnal (VCP510), VMware Technical Sales Professional, VMware Sales Professionnal
    Veeam Technical Sales Professional, Veeam Sales Professional
    Citrix Certified Sales Professional
    DataCore Sales Certified Professional

  6. #6
    Membre expert
    Avatar de vpourchet
    Homme Profil pro
    Integrateur Systemes & Virtualisation
    Inscrit en
    Avril 2008
    Messages
    1 159
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Integrateur Systemes & Virtualisation
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2008
    Messages : 1 159
    Points : 3 756
    Points
    3 756
    Par défaut
    j'ai modifié le code de mon TableModel :

    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
    public class TabModel extends AbstractTableModel{
       private String [] labelColonne; //Les entêtes des colonnes
       private ArrayList [] data; //Les données
     
       public TabModel (String [] titres) {
         labelColonne = titres;
         data = new ArrayList[labelColonne.length];
         for (int i = 0; i < labelColonne.length;i++)
           data[i] = new ArrayList();
       }
      public String  getColumnName  (int col)          {return labelColonne[col].toString();}
       public int     getRowCount    ()                 {return data[0].size();}
       public int     getColumnCount ()                 {return labelColonne.length;}
       public boolean isCellEditable (int row, int col) {return false; }
       public Object  getValueAt     (int row, int col) {return data[col].get(row);}
     
       public void setValueAt(Object value, int row, int col) {
         if (value != null) {
           if (row >= data[col].size()){
             data[col].add(row,value);
           }
           else{
             data[col].set(row,value);
           } 
         } else 
           for (int i = 0; i < getColumnCount(); i++) 
             data[i].remove(row);
         fireTableDataChanged();
       }
     
       //Permet de tout éffacer
       public void clear () {
         for (int i = 0;i < labelColonne.length;i++)
           data[i].clear();
         fireTableDataChanged();
       }
    }

    et ensuite je l'attribue a mon tableau :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
            String[] titres={"","Sample"};
            TabModel monModel = new TabModel(titres);
            monModel.setValueAt(array.get(0), 0, 1);
            JTable tablo = new JTable(monModel);
            tablo.validate();
            System.out.println("tab : " + tablo);
            scrPneAnalytes.setViewportView(tablo);
            this.setVisible(true);
    ce code me renvoies :

    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
    Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
            at software.FrmAnalytes.<init>(FrmAnalytes.java:36)
            at software.FrmFcs.btSetConcValuesMouseClicked(FrmFcs.java:324)
            at software.FrmFcs.access$600(FrmFcs.java:32)
            at software.FrmFcs$8.mouseClicked(FrmFcs.java:145)
            at java.awt.AWTEventMulticaster.mouseClicked(AWTEventMulticaster.java:253)
            at java.awt.Component.processMouseEvent(Component.java:6041)
            at javax.swing.JComponent.processMouseEvent(JComponent.java:3265)
            at java.awt.Component.processEvent(Component.java:5803)
            at java.awt.Container.processEvent(Container.java:2058)
            at java.awt.Component.dispatchEventImpl(Component.java:4410)
            at java.awt.Container.dispatchEventImpl(Container.java:2116)
            at java.awt.Component.dispatchEvent(Component.java:4240)
            at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4322)
            at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3995)
            at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3916)
            at java.awt.Container.dispatchEventImpl(Container.java:2102)
            at java.awt.Window.dispatchEventImpl(Window.java:2429)
            at java.awt.Component.dispatchEvent(Component.java:4240)
            at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
            at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:273)
            at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:183)
            at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:173)
            at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:168)
            at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:160)
            at java.awt.EventDispatchThread.run(EventDispatchThread.java:121)
    je ne comprends plus rien !
    Mon Site Web consacré à la Virtualisation

    VMware vExpert 2013/2012, VMware Certified Professionnal (VCP510), VMware Technical Sales Professional, VMware Sales Professionnal
    Veeam Technical Sales Professional, Veeam Sales Professional
    Citrix Certified Sales Professional
    DataCore Sales Certified Professional

  7. #7
    Membre chevronné

    Homme Profil pro
    Architecte logiciel
    Inscrit en
    Novembre 2006
    Messages
    1 252
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte logiciel
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 252
    Points : 1 954
    Points
    1 954
    Par défaut
    Tu as un problème de modèle de données. Expliques nous très précisément le type des données que tu souhaites éditer. En fonction de cela, nous pourrons définir le TableModel adéquat.

  8. #8
    Membre expert
    Avatar de vpourchet
    Homme Profil pro
    Integrateur Systemes & Virtualisation
    Inscrit en
    Avril 2008
    Messages
    1 159
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Integrateur Systemes & Virtualisation
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2008
    Messages : 1 159
    Points : 3 756
    Points
    3 756
    Par défaut
    merci de t'intéresser à mon probleme.

    voici ce que je souhaite faire : sur une frame j'ai défini deux Jlistes : une avec des fichiers et une avec des Objets. le but est de creer un tableau récapitulatif des données saisies qui peuvent etre modifiées.

    le tableau doit ressembler a celui sur l'impr écran dans le premier post.

    dans une array list j ai les noms des fichiers
    (FV 00000X sur le screenshot)

    dans une autre j ai les objets qui représentent les colonnes (TNF, IL-5, IL-10 ... )

    le but est vraiement de faire un tableau identique a celui sur le screenshot, il y a des zones de textes saisisables (les chiffres) et d'autre ne le sont pas...

    une fois ces tableau modifiés j'ajouterai un tableau dans mes objets, afin de stocker les valeurs saisies.


    j'espere avoir été clair je fais de mon mieux.

    cordialement merci !

    voici a quoi ressemble un des objets qui sera représenté par une colonne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    public class Bead {
        private String beadName;
        private int intensity;
        private int population;
        private double concentrations[];
        public static final String unitPg = "pg/ml";
    }
    vous laurez compris, le BeadName représente l'intitulé de la colonne et le tableau concentration[] représente l'ensemble des valeurs modifiables (une valeur par fichier)
    Mon Site Web consacré à la Virtualisation

    VMware vExpert 2013/2012, VMware Certified Professionnal (VCP510), VMware Technical Sales Professional, VMware Sales Professionnal
    Veeam Technical Sales Professional, Veeam Sales Professional
    Citrix Certified Sales Professional
    DataCore Sales Certified Professional

  9. #9
    Membre chevronné

    Homme Profil pro
    Architecte logiciel
    Inscrit en
    Novembre 2006
    Messages
    1 252
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte logiciel
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 252
    Points : 1 954
    Points
    1 954
    Par défaut
    On peut commencer avec ca

    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
     
    public class Bead {
        private String beadName;
        private int intensity;
        private int population;
        private double concentrations[];
        public static final String unitPg = "pg/ml";
     
        public String getBeadName() {
            return beadName;
        }
     
        public void setBeadName(String beadName) {
            this.beadName = beadName;
        }
     
        public double[] getConcentrations() {
            return concentrations;
        }
     
        public void setConcentrations(double[] concentrations) {
            this.concentrations = concentrations;
        }
     
     
        public double getConcentration(int i) {
            return concentrations[i];
        }
     
     
        public void setConcentration(int i, double concentration) {
            concentrations[i] = concentration;
        }
     
        public int getIntensity() {
            return intensity;
        }
     
     
        public void setIntensity(int intensity) {
            this.intensity = intensity;
        }
     
        public int getPopulation() {
            return population;
        }
     
        public void setPopulation(int population) {
            this.population = population;
        }
    }
    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
     
    import java.util.ArrayList;
    import java.util.Collection;
    import java.util.List;
     
    import javax.swing.table.AbstractTableModel;
     
    public class BeadModel extends AbstractTableModel {
        final List<Bead> beads;
     
        public BeadModel(Collection<Bead> beads) {
            this.beads = new ArrayList<Bead>(beads);
        }
     
        public String getColumnName(int col) {
            return beads.get(col).getBeadName();
        }
     
        public int getRowCount() {
            return beads.get(0).getConcentrations().length;
        }
     
        public int getColumnCount() {
            return beads.size();
        }
     
        public boolean isCellEditable(int row, int col) {
            return false;
        }
     
        public Object getValueAt(int row, int col) {
            return beads.get(col).getConcentrations()[row];
        }
     
        public void setValueAt(Object value, int row, int col) {
            beads.get(col).setConcentration(row, ((Number) value).doubleValue());
            fireTableDataChanged();
        }
    }
    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
     
    import java.awt.BorderLayout;
    import java.util.ArrayList;
    import java.util.List;
     
    import javax.swing.JFrame;
    import javax.swing.JTable;
     
    public class TEst {
        public static void main(String[] args) {
     
            List<Bead> beads = new ArrayList<Bead>();
     
            for (int i = 0; i < 10; i++) {
                Bead bead = new Bead();
     
                bead.setBeadName("bead - " + i);
                bead.setIntensity(i * 2);
                bead.setPopulation(i * 3);
                double[] concentrations = new double[10];
                for (int j = 0; j < 10; ++j) {
                    concentrations[j] = j * 50 / 3.0;
                }
                bead.setConcentrations(concentrations);
                beads.add(bead);
            }
     
            BeadModel monModel = new BeadModel(beads);
     
            JTable tablo = new JTable(monModel);
            tablo.validate();
     
            JFrame f = new JFrame();
            f.getContentPane().setLayout(new BorderLayout());
            f.getContentPane().add(BorderLayout.CENTER, tablo);
            f.setSize(400, 250);
            f.setVisible(true);
        }
    }

  10. #10
    Membre expert
    Avatar de vpourchet
    Homme Profil pro
    Integrateur Systemes & Virtualisation
    Inscrit en
    Avril 2008
    Messages
    1 159
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Integrateur Systemes & Virtualisation
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2008
    Messages : 1 159
    Points : 3 756
    Points
    3 756
    Par défaut
    exellent ! merci beaucoup !

    juste deux petites questions :


    j'ai remarqué qu'a un moment il fait appel a la méthode GetColumnName() mais les titres des colonnes ne s'affichent pas, faut il mettre quelquechose à true ?

    et si je souhaite rajouter une ligne qui représente le parametre 'intensity' je pourrai le faire ?

    en tout cas merci beaucoup beaucoup pour ce code magnifique !


    <edit : en ajoutant le tablo a un scrollpane les titres s'affichent dont c est bon, me reste plus que la ligne avec l'intensité>
    Mon Site Web consacré à la Virtualisation

    VMware vExpert 2013/2012, VMware Certified Professionnal (VCP510), VMware Technical Sales Professional, VMware Sales Professionnal
    Veeam Technical Sales Professional, Veeam Sales Professional
    Citrix Certified Sales Professional
    DataCore Sales Certified Professional

  11. #11
    Membre expert
    Avatar de vpourchet
    Homme Profil pro
    Integrateur Systemes & Virtualisation
    Inscrit en
    Avril 2008
    Messages
    1 159
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Integrateur Systemes & Virtualisation
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2008
    Messages : 1 159
    Points : 3 756
    Points
    3 756
    Par défaut
    est - il possible d'ajouter une colonne au début d'un tableau ayant un tablemodel sans que celui-ci soit appellé pour cet objet. je m'explique :

    je creer mon tableau avec le code que Tommy31 m'a passé ... je le mets dans un JScrollPane, jusque la no soucy c'est pile poil ce qu'il me faut.


    ensuite j'aimerais ajouter tout en début de tableau une colonne avec du texte, mais uniquement du texte, petit apperçu :


    ce que j obtiens :


    ce que je souhaiterais :



    avec dans cette premiere colonne du texte que je chope autre part !

    ce que j ai essayé (sans succes ):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    JTable tablo = new JTable(monModel);
            tablo.setAutoCreateColumnsFromModel(false);
            TableColumn colFics = new TableColumn();
            colFics.setHeaderValue("Kikou");
            tablo.addColumn(colFics);
    Mon Site Web consacré à la Virtualisation

    VMware vExpert 2013/2012, VMware Certified Professionnal (VCP510), VMware Technical Sales Professional, VMware Sales Professionnal
    Veeam Technical Sales Professional, Veeam Sales Professional
    Citrix Certified Sales Professional
    DataCore Sales Certified Professional

  12. #12
    Nouveau membre du Club
    Inscrit en
    Février 2008
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 40
    Points : 34
    Points
    34
    Par défaut
    Citation Envoyé par Valus25 Voir le message
    (...)
    j'ai remarqué qu'a un moment il fait appel a la méthode GetColumnName() mais les titres des colonnes ne s'affichent pas, faut il mettre quelquechose à true ?

    (...)
    <edit : en ajoutant le tablo a un scrollpane les titres s'affichent dont c est bon, me reste plus que la ligne avec l'intensité>
    J'ai lu ton fil, j'ai ce dernier problème et je débute aussi avec le JTable. Je comprends que tu as contourné le problème en plaçant le tout dans un scrollpane, mais est-ce qu'il existe une solution sans mettre dans un scrollpane? (Oui, en fait la question s'adresse aux experts Swing ici, je comprends que tu débutes comme moi).

  13. #13
    Membre chevronné

    Homme Profil pro
    Architecte logiciel
    Inscrit en
    Novembre 2006
    Messages
    1 252
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte logiciel
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 252
    Points : 1 954
    Points
    1 954
    Par défaut
    Tu peux jouer sur le tablemodel pour cela.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
       public int getColumnCount() {
            return beads.size() + 1;
        }
     
        public Object getValueAt(int row, int col) {
             if( col == 0 )
             {
                return "ligne " + row;
             }
             return beads.get(col-1).getConcentrations()[row];
        }
    N'oublie pas de modifier le setValueAt en conséquence aussi.

  14. #14
    Membre expert
    Avatar de vpourchet
    Homme Profil pro
    Integrateur Systemes & Virtualisation
    Inscrit en
    Avril 2008
    Messages
    1 159
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Integrateur Systemes & Virtualisation
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2008
    Messages : 1 159
    Points : 3 756
    Points
    3 756
    Par défaut
    j'avais lu ça :

    Note that if you wish to use a JTable in a standalone view (outside of a JScrollPane) and want the header displayed, you can get it using getTableHeader() and display it separately.
    donc ca semble ultra chiant a faire. moi j ai mis dans un scrollpane sans scroll comme ça pas de soucis !!


    personne n'as d'idée pour ajouter cette fichue colonne ?
    Mon Site Web consacré à la Virtualisation

    VMware vExpert 2013/2012, VMware Certified Professionnal (VCP510), VMware Technical Sales Professional, VMware Sales Professionnal
    Veeam Technical Sales Professional, Veeam Sales Professional
    Citrix Certified Sales Professional
    DataCore Sales Certified Professional

  15. #15
    Membre expert
    Avatar de vpourchet
    Homme Profil pro
    Integrateur Systemes & Virtualisation
    Inscrit en
    Avril 2008
    Messages
    1 159
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Integrateur Systemes & Virtualisation
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2008
    Messages : 1 159
    Points : 3 756
    Points
    3 756
    Par défaut
    Tu peux jouer sur le tablemodel pour cela.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
     
       public int getColumnCount() {
            return beads.size() + 1;
        }
     
        public Object getValueAt(int row, int col) {
             if( col == 0 )
             {
                return "ligne " + row;
             }
             return beads.get(col-1).getConcentrations()[row];
        }
    N'oublie pas de modifier le setValueAt en conséquence aussi.
    C'est ce que j ai essayé ,justement mais l'ennui c'est que ma premiere colonne ne contiendra pas un objet de type Bead, donc il faut que je modifies toute l'arrayList etc ... je pensais qu'il y avait un moyen plus rapide ... ou qu on pouvais désactiver le tableModel sur une colonne !




    edit : en fait j ai compris ce que je devais faire mais je reçois une erreur

    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
    Exception in thread "AWT-EventQueue-0" java.lang.IndexOutOfBoundsException: Index: 3, Size: 3
            at java.util.ArrayList.RangeCheck(ArrayList.java:547)
            at java.util.ArrayList.get(ArrayList.java:322)
            at software.BeadModel.getColumnName(BeadModel.java:25)
            at javax.swing.JTable.addColumn(JTable.java:2722)
            at javax.swing.JTable.createDefaultColumnsFromModel(JTable.java:1207)
            at javax.swing.JTable.tableChanged(JTable.java:4323)
            at javax.swing.JTable.setModel(JTable.java:3625)
            at javax.swing.JTable.<init>(JTable.java:611)
            at javax.swing.JTable.<init>(JTable.java:552)
            at software.FrmAnalytes.<init>(FrmAnalytes.java:36)
            at software.FrmFcs.btSetConcValuesMouseClicked(FrmFcs.java:324)
            at software.FrmFcs.access$600(FrmFcs.java:32)
            at software.FrmFcs$8.mouseClicked(FrmFcs.java:145)
            at java.awt.AWTEventMulticaster.mouseClicked(AWTEventMulticaster.java:253)
            at java.awt.Component.processMouseEvent(Component.java:6041)
            at javax.swing.JComponent.processMouseEvent(JComponent.java:3265)
            at java.awt.Component.processEvent(Component.java:5803)
            at java.awt.Container.processEvent(Container.java:2058)
            at java.awt.Component.dispatchEventImpl(Component.java:4410)
            at java.awt.Container.dispatchEventImpl(Container.java:2116)
            at java.awt.Component.dispatchEvent(Component.java:4240)
            at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4322)
            at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3995)
            at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3916)
            at java.awt.Container.dispatchEventImpl(Container.java:2102)
            at java.awt.Window.dispatchEventImpl(Window.java:2429)
            at java.awt.Component.dispatchEvent(Component.java:4240)
            at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
            at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:273)
            at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:183)
            at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:173)
            at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:168)
            at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:160)
            at java.awt.EventDispatchThread.run(EventDispatchThread.java:121)

    pourtant j ai bien modifié TOUTES les méthodes y compris setValueAt() et getName() ...
    Mon Site Web consacré à la Virtualisation

    VMware vExpert 2013/2012, VMware Certified Professionnal (VCP510), VMware Technical Sales Professional, VMware Sales Professionnal
    Veeam Technical Sales Professional, Veeam Sales Professional
    Citrix Certified Sales Professional
    DataCore Sales Certified Professional

  16. #16
    Nouveau membre du Club
    Inscrit en
    Février 2008
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 40
    Points : 34
    Points
    34
    Par défaut
    Citation Envoyé par Valus25 Voir le message
    j'avais lu ça :



    donc ca semble ultra chiant a faire. moi j ai mis dans un scrollpane sans scroll comme ça pas de soucis !!

    (...)
    Merci pour l'info, j'ai essayé plusieurs trucs hier dans cette direction, mais rien n'a fonctionné. Je vais faire comme toi, simplement mettre la table dans un scrollpane.

    Pour ta première colonne, vu que tu ne veux pas modifier le modèle de table, il aurait toujours la possibilité de traiter la première colonne comme une seconde table.

    Mais, tu pourrais quand même utiliser une seconde liste au niveau de ton modèle de table pour contenir la première colonne et traiter le cas où le numéro de colonne égal zéro de façon approprié au niveau du modèle. Ça ne nécessite pas de changements pour ta liste originale.

  17. #17
    Membre expert
    Avatar de vpourchet
    Homme Profil pro
    Integrateur Systemes & Virtualisation
    Inscrit en
    Avril 2008
    Messages
    1 159
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Integrateur Systemes & Virtualisation
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2008
    Messages : 1 159
    Points : 3 756
    Points
    3 756
    Par défaut
    oui cela semble fonctionner ... reste deux ou trois détails a peaufiner mais ca devrait me faire !

    merci

    bon courage avec ta JScrollPane
    Mon Site Web consacré à la Virtualisation

    VMware vExpert 2013/2012, VMware Certified Professionnal (VCP510), VMware Technical Sales Professional, VMware Sales Professionnal
    Veeam Technical Sales Professional, Veeam Sales Professional
    Citrix Certified Sales Professional
    DataCore Sales Certified Professional

  18. #18
    Membre expert
    Avatar de vpourchet
    Homme Profil pro
    Integrateur Systemes & Virtualisation
    Inscrit en
    Avril 2008
    Messages
    1 159
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Integrateur Systemes & Virtualisation
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2008
    Messages : 1 159
    Points : 3 756
    Points
    3 756
    Par défaut





    PS : merci tout ceux qui ont aidé.
    Mon Site Web consacré à la Virtualisation

    VMware vExpert 2013/2012, VMware Certified Professionnal (VCP510), VMware Technical Sales Professional, VMware Sales Professionnal
    Veeam Technical Sales Professional, Veeam Sales Professional
    Citrix Certified Sales Professional
    DataCore Sales Certified Professional

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

Discussions similaires

  1. XML ,XCODE ,application iphone : j'ai Besoin de votre aide SVP:)
    Par Clean-boy dans le forum XML/XSL et SOAP
    Réponses: 0
    Dernier message: 23/05/2011, 05h15
  2. [Alimentation] besoin de votre aide svp
    Par crisvalere dans le forum Composants
    Réponses: 1
    Dernier message: 28/04/2011, 22h06
  3. besoin de votre aide SVP
    Par paula dans le forum GLUT
    Réponses: 3
    Dernier message: 26/06/2006, 13h48

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