web-dev-qa-db-fra.com

Sélectionner par programme une ligne dans JTable

Lorsque l'application est démarrée, aucune des lignes n'est sélectionnée. Mais je voudrais montrer que la première ligne est déjà sélectionnée.

Comment faire ça? Dois-je définir la couleur d'une ligne dans JTable?

Mise à jour: j'ai essayé table.setRowSelectionInterval (0,0). Je sais que cela devrait fonctionner, mais il y a un message d'erreur:

Exception in thread "AWT-EventQueue-0" Java.lang.IllegalArgumentException: Row index out of range
    at javax.swing.JTable.boundRow(Unknown Source)
    at javax.swing.JTable.setRowSelectionInterval(Unknown Source)
    at cpn_gui.OptPanel.createForm(OptPanel.Java:124)
    at cpn_gui.OptPanel.<init>(OptPanel.Java:50)
    at cpn_gui.Login$1.actionPerformed(Login.Java:62)
    at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
    at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
    at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
    at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
    at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
    at Java.awt.Component.processMouseEvent(Unknown Source)
    at javax.swing.JComponent.processMouseEvent(Unknown Source)
    at Java.awt.Component.processEvent(Unknown Source)
    at Java.awt.Container.processEvent(Unknown Source)
    at Java.awt.Component.dispatchEventImpl(Unknown Source)
    at Java.awt.Container.dispatchEventImpl(Unknown Source)
    at Java.awt.Component.dispatchEvent(Unknown Source)
    at Java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
    at Java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
    at Java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
    at Java.awt.Container.dispatchEventImpl(Unknown Source)
    at Java.awt.Window.dispatchEventImpl(Unknown Source)
    at Java.awt.Component.dispatchEvent(Unknown Source)
    at Java.awt.EventQueue.dispatchEventImpl(Unknown Source)
    at Java.awt.EventQueue.access$000(Unknown Source)
    at Java.awt.EventQueue$1.run(Unknown Source)
    at Java.awt.EventQueue$1.run(Unknown Source)
    at Java.security.AccessController.doPrivileged(Native Method)
    at Java.security.AccessControlContext$1.doIntersectionPrivilege(Unknown Source)
    at Java.security.AccessControlContext$1.doIntersectionPrivilege(Unknown Source)
    at Java.awt.EventQueue$2.run(Unknown Source)
    at Java.awt.EventQueue$2.run(Unknown Source)
    at Java.security.AccessController.doPrivileged(Native Method)
    at Java.security.AccessControlContext$1.doIntersectionPrivilege(Unknown Source)
    at Java.awt.EventQueue.dispatchEvent(Unknown Source)
    at Java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
    at Java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
    at Java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
    at Java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    at Java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    at Java.awt.EventDispatchThread.run(Unknown Source)
50
Klausos Klausos

Vous pouvez le faire en appelant setRowSelectionInterval :

table.setRowSelectionInterval(0, 0);

pour sélectionner la première ligne.

94
aleroot

C'est un vieux post, mais je suis tombé sur cela récemment

Sélection d'un intervalle spécifique

Comme @aleroot déjà mentionné, en utilisant

table.setRowSelectionInterval(index0, index1);

Vous pouvez spécifier un intervalle à sélectionner.

Ajout d'un intervalle à la sélection existante

Vous pouvez également conserver la sélection actuelle et ajouter simplement des lignes supplémentaires en l'utilisant ici

table.getSelectionModel().addSelectionInterval(index0, index1);

Cette ligne de code sélectionne en outre l'intervalle spécifié. Peu importe que cet intervalle soit déjà sélectionné, certaines de ses parties sont sélectionnées.

12
rst

Vous utilisez le API disponible de JTable et vous n'essayez pas de jouer avec les couleurs.

Certaines méthodes de sélection sont disponibles directement sur le JTable (comme le setRowSelectionInterval). Si vous souhaitez avoir accès à toute la logique liée à la sélection, le modèle de sélection est l'endroit idéal pour commencer à chercher

6
Robin