Scroll personnalisé sur un tableau

internetowl8000 Messages postés 3 Date d'inscription vendredi 8 avril 2005 Statut Membre Dernière intervention 10 janvier 2009 - 12 nov. 2008 à 00:02
internetowl8000 Messages postés 3 Date d'inscription vendredi 8 avril 2005 Statut Membre Dernière intervention 10 janvier 2009 - 14 nov. 2008 à 23:46
Bonsoir,
J'aimerais créer un scroll personnalisé sur un tableau. Je m'explique:
Je souhaite faire défiler les éléments du tableau à l'aide du clavier (touche bas-haut) mais que la ligne de sélection (en surbrillance) reste toujours à la même position . En quelque sorte lorsque j'appuie sur la touche bas je ne veux pas que la ligne sélectionnée descende mais plutôt que tous les éléments du tableau remontent avec un scroll ( l'élément en surbrillance change donc mais sa position reste constante)
Il faut sûrement manipuler les ListSelectionListener & co mais je voulais savoir si vous pensiez que c'était jouable??

Merci d'avance

3 réponses

uhrand Messages postés 491 Date d'inscription samedi 20 mai 2006 Statut Membre Dernière intervention 15 juillet 2012 9
12 nov. 2008 à 18:39
Tu peus essayer ceci:

...
    private ListSelectionListener rowListener;
    private int keyPressed;
...
        rowListener = new ListSelectionListener() {
            private Rectangle rectToVisible;
            public void valueChanged(final ListSelectionEvent e) {
                if (e.getValueIsAdjusting()) {
                    return;
                }
                Rectangle visibleRect = table.getVisibleRect();
                int visibleRows = visibleRect.height / table.getRowHeight();
                int selectedRow = table.getSelectedRow();
                rectToVisible = table.getCellRect(selectedRow, 0, true);
                if(keyPressed == KeyEvent.VK_DOWN){
                    rectToVisible = table.getCellRect(selectedRow + visibleRows / 2, 0, true);
                }else if(keyPressed == KeyEvent.VK_UP){
                    rectToVisible = table.getCellRect(selectedRow - visibleRows / 2, 0, true);
                }
                SwingUtilities.invokeLater(new Runnable() {
                    public void run() {
                        table.scrollRectToVisible(rectToVisible);
                    }
                });
                
            }
        };
        table.getSelectionModel().addListSelectionListener(rowListener);
        table.addKeyListener(new KeyAdapter() {
            public void keyPressed(KeyEvent evt) {
                keyPressed = evt.getKeyCode();
            }
            public void keyReleased(KeyEvent evt) {
                keyPressed = -1;
            }
        });
...
0
uhrand Messages postés 491 Date d'inscription samedi 20 mai 2006 Statut Membre Dernière intervention 15 juillet 2012 9
13 nov. 2008 à 01:43
Voici un exemple complet: TableSpecialKeyScrolling.zip
0
internetowl8000 Messages postés 3 Date d'inscription vendredi 8 avril 2005 Statut Membre Dernière intervention 10 janvier 2009
14 nov. 2008 à 23:46
Ben c'est tout simplement parfait! C'est exactement ce que je cherchais à faire ... Merci beaucoup je vais essayer tout ça.
Bon week end!
0
Rejoignez-nous