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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  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 : 37
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Avril 2008
    Messages : 1 159
    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

  2. #2
    Membre Expert

    Homme Profil pro
    Architecte logiciel
    Inscrit en
    Novembre 2006
    Messages
    1 252
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    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
    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 : 37
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Avril 2008
    Messages : 1 159
    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 !

  4. #4
    Membre Expert

    Homme Profil pro
    Architecte logiciel
    Inscrit en
    Novembre 2006
    Messages
    1 252
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    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
    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 : 37
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Avril 2008
    Messages : 1 159
    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

  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 : 37
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Avril 2008
    Messages : 1 159
    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 !

+ 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, 04h15
  2. [Alimentation] besoin de votre aide svp
    Par crisvalere dans le forum Composants
    Réponses: 1
    Dernier message: 28/04/2011, 21h06
  3. besoin de votre aide SVP
    Par paula dans le forum GLUT
    Réponses: 3
    Dernier message: 26/06/2006, 12h48

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