Bonjour,
Mon problème est somme toute assez classique, je désire positionner la vue sur
une ligne de ma JTable en fonction du texte saisi dans un JTextField.
Mais pas moyen de mettre la main sur la façon de positionner la vue ..
Version imprimable
Bonjour,
Mon problème est somme toute assez classique, je désire positionner la vue sur
une ligne de ma JTable en fonction du texte saisi dans un JTextField.
Mais pas moyen de mettre la main sur la façon de positionner la vue ..
A mettre dans un actionPerformed lié à ton JTextField de façon a appeller la méthode a chaque modification de ton champ.
Code:maJTable.setRowSelectionInterval(ligne1, ligne1);
Merci pour ta réponse mais je pense avoir manqué de clarté dans ma question:
En fait ce que je désire obtenir c'est le positionnement de la scrollBar de ma JTable à la
position de l'élement recherché.
Je pense avoir creusé un bout de solution avec le code suivant :
Je me demande s'il n'y a pas une manière plus conventionnelle d'implémenter ca..Code:
1
2
3
4
5
6
7
8
9
10 //row et col pour la position de la cellule à 'voir' Rectangle posRelativeDeLaCellule = maTable.getCellRect(row, col, true); //Réajustement 'a la louche' pour centrer la vue sur la ligne if (posRelativeDeLaCellule.y>95) posRelativeDeLaCellule.y+=95; maTable.scrollRectToVisible(posRelativeDeLaCellule); maTable.setRowSelectionInterval(row,row); maTable.repaint();
Ha oui en effet j'avais pas compris çà :mouarf:
Je penses que ta méthode est viable et je ne sais pas s'il y a moyen de contrôler une JScrollBar sur base de son contenu autrement.
D'autres pourront sans doute mieux t'aider que moi, désolé :aie:
Le problème c'est que la fonction scrollRectToVisible() combinée à getCellRect() se comporte de façon assez erratique.
En effet parfois la ligne sélectionnée est affichée en haut du conteneur, parfois en bas. De fait le centrage devient impossible.
Ces deux images en guise d'exemple :
Pièce jointe 25772
Pièce jointe 25773
Fait en sorte que ton Rectangle soit aussi grand que la vue. Le truc c'est que getCellRect te renvoi un Rectangle pour ta cellule mais du coup lorsque tu appelles la méthode scrollRectToVisible, il peut la mettre ou il veut et c'est en effet erratique ;)
Si tu pars du Rectangle de ta cellule, que tu recupères le Rectangle de la 11e ligne (d'après ton screen) maximum et selon le nombre de ligne restante, tu peux créer une Rectangle qui englobe les 2 précédent et le passer a scrollRectToVisible qui n'aura pas d'autre choix que de l'affiche complètement.
Très bonne idée :D
Ca résout mon problème, merci.