Java - Add Pagination to JTable

How to Create a Paginated JTable In Java Netbeans


In this Java Tutorial we will see How To Create a paginated JTable with sample data, allowing the user to navigate through different pages using "Previous" and "Next" buttons In Java Using Netbeans.

What We Are Gonna Use In This Project:

- Java Programming Language.
- NetBeans Editor.





Project Source Code:



package new_tutorials;

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Font;
import javax.swing.BorderFactory;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.UIManager;
import javax.swing.table.DefaultTableModel;

/**
 *
 * @author 1BestCsharp
 */
public class TablePaginationFrame  extends JFrame{

    private DefaultTableModel tableModel;
    private JTable table;
    private JButton prevButton;
    private JButton nextButton;
    private int currentPage = 1;
    private final int itemsPerPage = 5;
    
    public TablePaginationFrame()
    {
        setTitle("Paginated Table");
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setSize(400,300);
        setLocationRelativeTo(null);
        intializeUI();
    }
    
    private void intializeUI(){
     
        UIManager.put("Button.focus", new Color(0,0,0,0));
        UIManager.put("Button.select", new Color(200,200,200));
        UIManager.put("Button.background", new Color(240,240,240));
        UIManager.put("Button.border", BorderFactory.createEmptyBorder(5, 15, 5, 15));
        
        tableModel = new DefaultTableModel(new Object[]{"ID","Name"}, 0);
        table = new JTable(tableModel);
        table.setRowHeight(25);
        table.setFont(new Font("Arial", Font.PLAIN, 18));
        JScrollPane scrollPane = new JScrollPane(table);
        
        prevButton = new JButton("Previous");
        nextButton = new JButton("Next");
        
        prevButton.addActionListener((e) -> {
            if(currentPage > 1){
                currentPage--;
                updateTableModel();
            }
        });
        
        nextButton.addActionListener((e) -> {
            if(currentPage < getTotalPages()){
                currentPage++;
                updateTableModel();
            }
        });
        
        JPanel buttonPanel = new JPanel();
        buttonPanel.add(prevButton);
        buttonPanel.add(nextButton);
        
        getContentPane().setLayout(new BorderLayout());
        getContentPane().add(scrollPane, BorderLayout.CENTER);
        getContentPane().add(buttonPanel, BorderLayout.SOUTH);
        
        updateTableModel();
    }
    
    
    private void updateTableModel(){
        
        // Calculate the start and end indices for the current page
        int startIndex = (currentPage - 1) * itemsPerPage;
        int endIndex = Math.min(startIndex + itemsPerPage, getData().length);
        
        // Clear the existing table model and add rows for the current page
        tableModel.setRowCount(0);
        for(int i = startIndex; i < endIndex; i++){
            tableModel.addRow(getData()[i]);
        }
        
        // Enable/disable pagination buttons based on the current page
        prevButton.setEnabled(currentPage > 1);
        nextButton.setEnabled(currentPage < getTotalPages());
        
    }
    
    
    private int getTotalPages(){
        // Calculate the total number of pages based on 
        // the total data length and items per page
        return (int) Math.ceil((double)getData().length / itemsPerPage);
        
    }
    
    private Object[][] getData(){
        // Sample data for the table
        return new Object[][]{ 
                {1, "Item 1"},
                {2, "Item 2"},
                {3, "Item 3"},
                {4, "Item 4"},
                {5, "Item 5"},
                {6, "Item 6"},
                {7, "Item 7"},
                {8, "Item 8"},
                {9, "Item 9"},
                {10, "Item 10"},
                {11, "Item 11"},
                {12, "Item 12"},
                {13, "Item 13"},
                {14, "Item 14"},
                {15, "Item 15"},
                {16, "Item 16"},
                {17, "Item 17"},
                {18, "Item 18"},
                {19, "Item 19"},
                {20, "Item 20"},
                {21, "Item 21"},
                {22, "Item 22"},
                {23, "Item 23"},
                {24, "Item 24"},
                {25, "Item 25"},
                {26, "Item 26"},
                {27, "Item 27"},
                {28, "Item 28"},
                {29, "Item 29"},
                {30, "Item 30"},
                {99, "shdchsdbs shdsc"},
                {777, "euebvdi vdbcq"}
        };
    }
    
    
    public static void main(String[] args) {
        TablePaginationFrame frame = new TablePaginationFrame();
        frame.setVisible(true);
    }
    
}




The Final Result:

Java Jtable Pagination Buttons

Jtable Pagination Buttons In Java Netbeans

Jtable Pagination Buttons In Java Swing





Share this

Related Posts

Latest
Previous
Next Post »

:)
:(
hihi
:-)
:D
=D
:-d
;(
;-(
@-)
:P
:o
:>)
(o)
:p
:-?
(p)
:-s
(m)
8-)
:-t
:-b
b-(
:-#
=p~
$-)
(y)
(f)
x-)
(k)
(h)
cheer