2016-07-12 16 views
1

Ich versuche herauszufinden, wie Logik zu einer JTable über eine "if" -Anweisung hinzufügen, die überprüft, ob eine beliebige Zeile ausgewählt ist. Ich weiß, wie man überprüft, ob eine bestimmte Zeile ausgewählt ist, aber ich kann nicht herausfinden, wie man alle Zeilen überprüft.JTable, wenn eine Zeile ausgewählt ist

if(tbl.isRowSelected(0)){ 

Offensichtlich überprüft das für eine bestimmte Zeile.

Ich habe auch versucht, so etwas wie

if(tbl.isRowSelected(0-2000)){ 

Dies funktionierte nicht noch erwarte ich es zu arbeiten.

Der Grund dafür ist, dass ich die Tabelle so einrichten, dass, wenn der Benutzer auf eine Zeile klickt und dann auf eine Schaltfläche "Bearbeiten" klickt, eine zweite Tabelle mit mehr Daten zur ausgewählten Zeile erscheint. (Wird hier mit 2D-Arrays innerhalb einer Hash-Map kompliziert, aber ich muss zuerst durch dieses einfache Problem kommen).

Danke für die Hilfe im Voraus!

+0

Wissen Sie, was eine Schleife ist (dh: 'for',' while' usw.)? –

+0

Ja Jonny. Ich könnte das tun, aber es wäre nicht dynamisch. Ich weiß nicht, wie viele Zeilen es geben wird. – jesric1029

+1

Warum nicht ['JTable # getSelectedRow()'] (https://docs.oracle.com/javase/7/docs/api/javax/swing/JTable.html#getSelectedRow%28%29) verwenden? 'if (table.getSelectedRow()! = -1) {...}' –

Antwort

3

Dies sollte mit einem ListSelectionModel, möglich sein, die Sie table.getSelectionModel().isSelectionEmpty() So JTable::getSelectionModel()

mit abgerufen werden können anrufen, wenn jede Zeile, um herauszufinden, ausgewählt ist.

+0

Danke. Ich habe dies als akzeptierte Antwort markiert, weil ich glaube, dass es meine Frage am einfachsten beantwortet hat. – jesric1029

2

Verwendung:

table.getSelectionModel().addListSelectionListener(new ListSelectionListener(){ 
     public void valueChanged(ListSelectionEvent event) { 
      // do some actions here, for example 
      // print first column value from selected row 
      System.out.println(table.getValueAt(table.getSelectedRow(), 0).toString()); 
     } 
    }); 
2

Verwendung table.getSelectedRow() es gibt den Index der ausgewählten Zeile und getSelectedColumn() geben die ausgewählten Spalten

und es gibt getSelectedRows() return es Indexarrays ausgewählter Zeilen

int[] indexs=table_name.getSelectedRows(); 
//all the selected row are here no need to go throw 
//all your rows to see if they are selected or not 
for(int index_row:rows){ 
    //you code here 
} 
Verwandte Themen