Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Efficient way to implement paged SQL result table in a Java desktop application

I need to build a table from SQL select result set. I want to add some paging functionality to the table because the result set can be very large. There was many discussions how to do the paging at the SQL level. But how to implement the paging at the GUI level? I have two ideas:

  1. Do the paging in a web UI style - for example google search result paging;
  2. "Excel style" - the scroll pane where the table resides expands as user scrolls down.

The second one looks nicer but complex to implement. When to do SQL select for a next chunk of data so that a user haven't wait for it. There should be some "read ahead" logic? What will happen if user scrolls quite quickly? What to do with rows that aren't visible any more to have constant memory usage? Maybe there is already such a table component or good examples? Or maybe this good looking table functionality is unworthy of efforts to implement it?


1 Answers

You could do everything directly into your TableModel, there is no need to change something in the UI(well you migh show something in the UI - a status - but you don't need to change how JTable renders itself).

Just implement a JDBCTableModel which will have :

  • count the results and return this value as getRowCount().
  • have a background thread which brings page X(row X to row X + page_size) in memory
  • if the view(JTable) asks for a row which is not there(page not loaded) show a message "Loading data..." somewhere in left or rigth top corner and return empty cells.

Paging doesn't makes sense for a Swing application, it was invented before the current fancy AJAX libraries could implement table scrolling(see http://www.ext-livegrid.com/).

like image 113
adrian.tarau Avatar answered Jun 21 '26 23:06

adrian.tarau



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!