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 et scrollPane


Sujet :

Composants Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de L4BiN
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2006
    Messages
    432
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2006
    Messages : 432
    Par défaut JTable JScrollPane : montrer la dernière ligne
    Comment fait on pour que à chaque ligne qui apparait dans la JTable, le scrollPane descend de maniere a ce que l'on voi toujours la derniere ligne crée..

  2. #2
    Membre émérite
    Avatar de sironimo
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    669
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Mai 2004
    Messages : 669
    Par défaut
    Peut être en mettant le focus sur la dernière ligne que tu viens d'ajouter, enfin ça me paraît une bonne solution

  3. #3
    Membre chevronné Avatar de schniouf
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2003
    Messages
    382
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Luxembourg

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2003
    Messages : 382
    Par défaut
    ou alors en faisant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Jscrollbar bar = scrollpane.getVercticalScrollBar() ; 
    bar.setValue( bar.getMaximumValue() ) ;
    Mais je sais pas si ça fonctionne.

  4. #4
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    Salut,


    Tu peux utiliser la méthode scrollRectToVisible() pour déplacer rendre visible une zone du composant, et getCellRect() pour obtenir les coordonnées de la zone correspondante à une cellule...

    Enfin tu peux utiliser le TableModelListener pour détecter l'évènement d'ajout de ligne, par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    	final JTable table = ...
     
    	table.getModel().addTableModelListener(new TableModelListener() {
    		public void tableChanged(final TableModelEvent e) {
    			if (e.getType()==TableModelEvent.INSERT) {
    				table.scrollRectToVisible(
    						table.getCellRect(e.getLastRow(), 0, false) );
    			}
    		}
    	});
    Seulement il y a un petit problème : la JTable utilise également un TableModelListener pour détecter l'ajout de ligne... et donc notre listener peut être effectué AVANT que la ligne soit réellement affiché dans la JTable. Du coup on sélectionne la dernière ligne "juste avant" qu'une nouvelle ligne soit affiché : on dirait que le jscrollpane se déplace "seulement" sur l'avant dernière ligne...


    Pour régler cela il y a deux solutions :
    • Il faut "retarder" le déplacement du JScrollPane, pour cela on peut utiliser invokeLater() pour remettre le code en "fin de pile" on est sûr que tous les listeners seront exécutés lorsqu'on déplacera le JScrollPane :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    	table.getModel().addTableModelListener(new TableModelListener() {
    		public void tableChanged(final TableModelEvent e) {
    			if (e.getType()==TableModelEvent.INSERT) {
    				// On exécute le code plus tard :
    				SwingUtilities.invokeLater(new Runnable() {
    					public void run() {
    						table.scrollRectToVisible(
    								table.getCellRect(e.getLastRow(), 0, false) );
    					}
    				});
     
    			}
    		}
    	});
    • La seconde solution serait d'hériter de JTable pour lui incorporer cette fonctionnalité, tout simplement en redéfinissant sa méthode tablechanged() :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    	@Override
    	public void tableChanged(TableModelEvent e) {
    		// Ne pas oublier d'appeler le parent,
    		// sinon les lignes ne seront pas ajoutées
    		super.tableChanged(e);
     
    		// Puis ajouter le code pour afficher la ligne
    		if (e.getType()==TableModelEvent.INSERT) {
    			this.scrollRectToVisible(
    					this.getCellRect(e.getLastRow(), 0, false) );
    		}
    	}
    a++

  5. #5
    Membre éclairé Avatar de L4BiN
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2006
    Messages
    432
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2006
    Messages : 432
    Par défaut
    merci de toute ces soluce ca marche cool

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

Discussions similaires

  1. JTable sans colonne dans ScrollPane
    Par rtg57 dans le forum Composants
    Réponses: 2
    Dernier message: 29/01/2011, 22h27
  2. JTable sans scrollpane
    Par david06600 dans le forum Composants
    Réponses: 10
    Dernier message: 11/07/2006, 18h32
  3. [JTable] Un ScrollPane dans une cellule
    Par Colonel Renard dans le forum Composants
    Réponses: 3
    Dernier message: 25/07/2005, 16h54
  4. JTable dans un scrollpane
    Par Scrusher dans le forum Agents de placement/Fenêtres
    Réponses: 4
    Dernier message: 04/05/2004, 20h45
  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