Wählen Sie programmgesteuert eine Zeile in JTable aus

Lesezeit: 4 Minuten

Benutzer-Avatar
Klausos Klausos

Wenn die Anwendung gestartet wird, ist keine der Zeilen ausgewählt. Aber ich möchte zeigen, dass die erste Zeile bereits ausgewählt ist.

Wie macht man das? Muss ich die Farbe einer Zeile einstellen? JTable?

Update: Ich habe es mit table.setRowSelectionInterval(0,0) versucht. Ich weiß, dass es funktionieren sollte, aber es gibt eine Fehlermeldung:

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)

Benutzer-Avatar
Aleroot

Du kannst es anrufen setRowSelectionInterval :

table.setRowSelectionInterval(0, 0);

um die erste Zeile auszuwählen.

  • Bitte überprüfen Sie die Aktualisierungen in meinem Beitrag. Ich habe eine Fehlermeldung gepostet. Was könnte falsch sein?

    – Klausos Klausos

    28. Dezember 2011 um 21:26 Uhr

  • Mein Code sieht wie folgt aus: QueryTableModel tableModel = new QueryTableModel(); JTable-Tabelle = new JTable (tableModel); table.setRowSelectionInterval(0, 0);

    – Klausos Klausos

    28. Dezember 2011 um 21:41 Uhr


  • Vor dem Aufruf von table.setRowSelectionInterval(0, 0) müssen Sie sicherstellen, dass mindestens eine Zeile in der Tabelle vorhanden ist, andernfalls erhalten Sie diesen Fehler. Rufen Sie table.setRowSelectionInterval(0, 0) auf, nachdem Sie die Tabelle gefüllt haben …

    – Aleroot

    28. Dezember 2011 um 21:43 Uhr

Es ist ein alter Beitrag, aber ich bin kürzlich darauf gestoßen

Auswählen eines bestimmten Intervalls

Wie @aleroot bereits erwähnt hat, durch Verwendung von

table.setRowSelectionInterval(index0, index1);

Sie können ein Intervall angeben, das ausgewählt werden soll.

Hinzufügen eines Intervalls zur bestehenden Auswahl

Sie können auch die aktuelle Auswahl beibehalten und einfach zusätzliche Zeilen hinzufügen, indem Sie dies hier verwenden

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

Diese Codezeile wählt zusätzlich das angegebene Intervall aus. Es spielt keine Rolle, ob dieses Intervall bereits ausgewählt ist, oder Teile davon ausgewählt sind.

  • Dies ist eine allgemeinere Antwort, die sowohl die aufeinanderfolgende als auch die nicht aufeinanderfolgende Zeilenauswahl abdeckt. Es hat für mich funktioniert.

    – Kamal Singh

    1. April 2016 um 7:00 Uhr

Sie verwenden die verfügbare API von JTable und versuchen Sie nicht, mit den Farben herumzuspielen.

Einige Auswahlmethoden sind direkt auf der verfügbar JTable (wie setRowSelectionInterval). Wenn Sie Zugriff auf die gesamte auswahlbezogene Logik haben möchten, können Sie die Auswahlmodell ist der richtige Ort, um mit der Suche zu beginnen

  • Ich habe es mit table.setRowSelectionInterval(1,1) versucht, aber es heißt, dass der “Zeilenindex außerhalb des Bereichs” liegt, obwohl die Tabelle bereits aus der DB gefüllt wurde. Irgendwelche Ideen?

    – Klausos Klausos

    28. Dezember 2011 um 21:07 Uhr


  • Wie fast alles in Java beginnt die Nummerierung bei Zeile 0 und nicht bei Zeile 1. Ändern Sie sie also in setRowSelectionInterval(0,0)

    – Robin

    28. Dezember 2011 um 21:09 Uhr

1032670cookie-checkWählen Sie programmgesteuert eine Zeile in JTable aus

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy