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:
More Java Projects:
Download Projects Source Code