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

NetBeans Platform Java Discussion :

Pb de Scrollbar Vertical dans un JTable


Sujet :

NetBeans Platform Java

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    13
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 13
    Par défaut Pb de Scrollbar Vertical dans un JTable
    Bonjour à tous,

    Je réalise une application J2EE avec Netbeans et j'ai un petit soucis avec un JTable.
    J'ai un bouton "AJOUTER" qui m'insère une nouvelle ligne dans ma base de données et dans mon JTable par contre la scrollbar verticale ne descend pas automatiquement. Existe t-il une méthode qui le fasse tout seul?

    Voici mon code quand je clique sur mon bouton ajouter:

    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
     
    private void bt_ajouterMouseClicked(java.awt.event.MouseEvent evt) {                                        
            // TODO add your handling code here:
            nb_eleves++;
            DefaultTableModel model = ( DefaultTableModel ) tab_eleves.getModel ();
            // Récupération du model du tableau, tab_eleves
            model.addRow ( new Object [] { nb_eleves, " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", "6°1" } );
            tab_eleves.updateUI();
            tab_eleves.editCellAt ( nb_eleves - 1, 1 );
            tab_eleves.getEditorComponent().requestFocus();
            // Applique le focus
            lab_nbeleves.setText( "Il y a " + nb_eleves + " élève(s) dans le collège !" );
            try {
                stmt = conn.createStatement ();
                stmt.executeUpdate ( "INSERT INTO eleve VALUES ( '" + nb_eleves + "', '', '', '', '','','','','','','','1' )" );
                rs.close();
                stmt.close();
            }
                catch ( Exception e ) {
                    System.out.println ( " ERREUR DE REQUETE SQL : " + e );
                }
        }

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Février 2009
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : Tunisie

    Informations forums :
    Inscription : Février 2009
    Messages : 26
    Par défaut
    Citation Envoyé par tom_tom73 Voir le message
    Bonjour à tous,

    Je réalise une application J2EE avec Netbeans et j'ai un petit soucis avec un JTable.
    J'ai un bouton "AJOUTER" qui m'insère une nouvelle ligne dans ma base de données et dans mon JTable par contre la scrollbar verticale ne descend pas automatiquement. Existe t-il une méthode qui le fasse tout seul?

    Voici mon code quand je clique sur mon bouton ajouter:

    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
     
    private void bt_ajouterMouseClicked(java.awt.event.MouseEvent evt) {                                        
            // TODO add your handling code here:
            nb_eleves++;
            DefaultTableModel model = ( DefaultTableModel ) tab_eleves.getModel ();
            // Récupération du model du tableau, tab_eleves
            model.addRow ( new Object [] { nb_eleves, " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", "6°1" } );
            tab_eleves.updateUI();
            tab_eleves.editCellAt ( nb_eleves - 1, 1 );
            tab_eleves.getEditorComponent().requestFocus();
            // Applique le focus
            lab_nbeleves.setText( "Il y a " + nb_eleves + " élève(s) dans le collège !" );
            try {
                stmt = conn.createStatement ();
                stmt.executeUpdate ( "INSERT INTO eleve VALUES ( '" + nb_eleves + "', '', '', '', '','','','','','','','1' )" );
                rs.close();
                stmt.close();
            }
                catch ( Exception e ) {
                    System.out.println ( " ERREUR DE REQUETE SQL : " + e );
                }
        }
    si la ligne est ajouté à la fin:
    int i=tab_eleves.getRowCount();
    tab_eleves..getSelectionModel().setSelectionInterval(i, i);

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    13
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 13
    Par défaut
    J'avais déjà essayer cette solution, mais ça me sélectionne toute la ligne et ça ne me descend pas la scrollbar vertical, donc à chaque fois il faut descendre tout en bas avec la souris et c'est pas terrible je trouve.

    Tu n'aurais pas une autre solution par hasard.

    Merci pour ta réponse malgré tout.

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Février 2009
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : Tunisie

    Informations forums :
    Inscription : Février 2009
    Messages : 26
    Par défaut
    ça marche avec JScrollPane
    private javax.swing.JScrollPane tonjscrollpane= new JScrollPane();
    tonjscrollpan.setViewportView(ton_table);

  5. #5
    Membre Expert
    Profil pro
    Inscrit en
    Août 2006
    Messages
    3 276
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 3 276
    Par défaut
    Il faut utiliser les deux méthodes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    //surligner la ligne en question
    table.addRowSelectionInterval(index, index);
     
    //selectionner la ligne du tableau
    //vérifier les paramètres avec la Javadoc en fonction de tes besoins
    table.changeSelection(index, 0, true, true);

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    13
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 13
    Par défaut
    Bon donc j'ai essayé de mettre les deux méthodes suivantes dans ma méthodes bt_ajouterMouseclicked :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    tab_eleves.addRowSelectionInterval ( nb_eleves, nb_eleves);
     
    tab_eleves.changeSelection ( nb_eleves, 0, true, true );
    Mais j'ai une exception de la part du débogueur :

    Exception in thread "AWT-EventQueue-0" java.lang.IllegalArgumentException: Row index out of range
    at javax.swing.JTable.boundRow(JTable.java:2105)
    at javax.swing.JTable.addRowSelectionInterval(JTable.java:2155)
    at projet.IhmGestionEleves.bt_ajouterMouseClicked(IhmGestionEleves.java:390)
    at projet.IhmGestionEleves.access$200(IhmGestionEleves.java:10)
    at projet.IhmGestionEleves$3.mouseClicked(IhmGestionEleves.java:139)
    at java.awt.AWTEventMulticaster.mouseClicked(AWTEventMulticaster.java:253)
    at java.awt.Component.processMouseEvent(Component.java:6266)
    at javax.swing.JComponent.processMouseEvent(JComponent.java:3267)
    at java.awt.Component.processEvent(Component.java:6028)
    at java.awt.Container.processEvent(Container.java:2041)
    at java.awt.Component.dispatchEventImpl(Component.java:4630)
    at java.awt.Container.dispatchEventImpl(Container.java:2099)
    at java.awt.Component.dispatchEvent(Component.java:4460)
    at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4574)
    at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4247)
    at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4168)
    at java.awt.Container.dispatchEventImpl(Container.java:2085)
    at java.awt.Window.dispatchEventImpl(Window.java:2478)
    at java.awt.Component.dispatchEvent(Component.java:4460)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)

  7. #7
    Membre Expert
    Profil pro
    Inscrit en
    Août 2006
    Messages
    3 276
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 3 276
    Par défaut
    java.lang.IllegalArgumentException: Row index out of range
    Le message est clair, ton index est trop grand par rapport au nombre d'éléments de ta JTable.

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    13
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 13
    Par défaut
    Ok C bon j'ai réussi, je vous remerci à tous !

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

Discussions similaires

  1. Réponses: 6
    Dernier message: 16/01/2012, 09h43
  2. Réponses: 3
    Dernier message: 01/08/2011, 08h37
  3. [JTable] couleur de sélection dans une JTable
    Par spoutyoyo dans le forum Composants
    Réponses: 7
    Dernier message: 06/12/2004, 11h43
  4. Sélection d'une ligne dans un JTable
    Par dam21 dans le forum Composants
    Réponses: 3
    Dernier message: 28/07/2004, 12h57
  5. Separateur vertical dans une ListCtrl
    Par jul54 dans le forum MFC
    Réponses: 2
    Dernier message: 15/01/2004, 15h33

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