# JTable sichtbare Zeilen innerhalb von JScrollPane ermitteln



## javasdann (14. Mrz 2005)

Hallo,

ich habe eine JTable in einem JScrollPane. Nun möchte ich den sichtbaren Bereich innerhalb von dem Pane ermitteln.
Also z.B. etwas in der Art: Es sind zur Zeit die Zeilen 5-10 von insgesamt 120 Zeilen im Pane sichtbar...

Habe jetzt schon mal so Dinge wie JViewPort entdeckt. Hat mich aber nicht so richtig weitergebracht :-(

Kennt jemand das Problem und hat ne schöne Lösung dazu?

Danke & Gruß,
  Roger


----------



## Sky (14. Mrz 2005)

Es ist eine einfache Rechnung: Höhe des sichtbaren Bereichs geteilt durch die Höhe einer Zeile


----------



## javasdann (14. Mrz 2005)

...und woher weiß ich ab welcher zeile die Anzeige beginnt? Und hast Du zufällig (ohne nachzuschauen) parat woher ich die Infos bekomme? pane.getHeight() & table.getRowHeight() ???

Gruß,
  Roger


----------



## KSG9|sebastian (14. Mrz 2005)

Row-height kannste festlegen/auslesen mit JTable#getRowHeight()

JScrollPane#getHeight() müsste dir die Höhe von dem sichtbaren teil liefern


----------



## javasdann (14. Mrz 2005)

Super Danke - nun fehlt mir nur noch wie ich die erste angezeigte Zeile herausfinde, also daß z.B. ganz oben im sichtbaren Bereich die 5. Zeile steht.


----------



## javasdann (14. Mrz 2005)

Hab ne Lösung die für mich ausreichend ist...
Wie kann man ein Thema abhaken?



```
//Erste sichtbare Zeile
    visible_startrow = 0;
    if ((tablePane.getVerticalScrollBar().getValue() > 0) && (tabelle.getRowHeight() > 0)) {
      visible_startrow = tablePane.getVerticalScrollBar().getValue() / tabelle.getRowHeight();
    }
    visible_startrow++;
    
    //Letzte sichtbare Zeile - ACHTUNG - beim ersten Mal leer und stimmt nicht 100% - zB Scrollbar abziehen
    int visible_endrow = 0;
    if ((tablePane.getHeight() > 0) && (tabelle.getRowHeight() > 0)) { 
      visible_endrow = visible_startrow + (tablePane.getHeight() / tabelle.getRowHeight()) - 1; 
    }
```


----------

