
How to make pagination using JDBC.

Here is a program that shows pagination.
import java.awt.*;
import java.sql.*;
import java.util.*;
import javax.swing.*;
import java.awt.event.*;
import javax.swing.text.*;
import javax.swing.event.*;
import javax.swing.table.*;
import javax.swing.plaf.basic.*;
public class GridView extends JPanel {
RadioButtonUI ui = new RadioButtonUI();
int pageSize = 5;
Model model = new Model();
TableRowSorter sorter = new TableRowSorter(model);
Box box = Box.createHorizontalBox();
public GridView() {
super(new BorderLayout());
JTable table = new JTable(model) {
public Component prepareRenderer(TableCellRenderer tcr, int row,
int column) {
Component c = super.prepareRenderer(tcr, row, column);
if (isRowSelected(row)) {
c.setForeground(getSelectionForeground());
c.setBackground(getSelectionBackground());
} else {
c.setForeground(getForeground());
c.setBackground((row % 2 == 0) ? Color.lightGray
: getBackground());
}
return c;
}
};
table.setIntercellSpacing(new Dimension());
table.setShowGrid(false);
table.setRowSorter(sorter);
showPages(10, 1);
add(new JScrollPane(table));
add(box, BorderLayout.SOUTH);
setPreferredSize(new Dimension(320, 240));
}
private void showPages(final int itemsPerPage, final int currentPageIndex) {
sorter.setRowFilter(filter(itemsPerPage, currentPageIndex - 1));
ArrayList l = new ArrayList();
int startPageIndex = currentPageIndex - pageSize;
if (startPageIndex <= 0)
startPageIndex = 1;
int maxPageIndex = (model.getRowCount() / itemsPerPage) + 1;
int endPageIndex = currentPageIndex + pageSize - 1;
if (endPageIndex > maxPageIndex)
endPageIndex = maxPageIndex;
if (currentPageIndex > 1)
l
.add(createRadioButtons(itemsPerPage, currentPageIndex - 1,
"Prev"));
for (int i = startPageIndex; i <= endPageIndex; i++)
l.add(createLinks(itemsPerPage, currentPageIndex, i - 1));
if (currentPageIndex < maxPageIndex)
l
.add(createRadioButtons(itemsPerPage, currentPageIndex + 1,
"Next"));
box.removeAll();
ButtonGroup bg = new ButtonGroup();
box.add(Box.createHorizontalGlue());
for (JRadioButton r : l) {
box.add(r);
bg.add(r);
}
box.add(Box.createHorizontalGlue());
box.revalidate();
box.repaint();
l.clear();
}

continue....
private JRadioButton createLinks(final int itemsPerPage, final int current,
final int target) {
JRadioButton radio = new JRadioButton("" + (target + 1)) {
protected void fireStateChanged() {
ButtonModel model = getModel();
if (!model.isEnabled()) {
setForeground(Color.GRAY);
} else if (model.isPressed() && model.isArmed()) {
setForeground(Color.GREEN);
} else if (model.isSelected()) {
setForeground(Color.RED);
}
super.fireStateChanged();
}
};
radio.setForeground(Color.BLUE);
radio.setUI(ui);
if (target + 1 == current) {
radio.setSelected(true);
}
radio.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
showPages(itemsPerPage, target + 1);
}
});
return radio;
}
private JRadioButton createRadioButtons(final int itemsPerPage,
final int target, String title) {
JRadioButton radio = new JRadioButton(title);
radio.setForeground(Color.BLUE);
radio.setUI(ui);
radio.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
showPages(itemsPerPage, target);
}
});
return radio;
}
private RowFilter filter(final int itemsPerPage,
final int target) {
return new RowFilter() {
public boolean include(
Entry entry) {
int ei = entry.getIdentifier();
return (target * itemsPerPage <= ei && ei < target
* itemsPerPage + itemsPerPage);
}
};
}
public static void main(String[] args) {
JFrame frame = new JFrame("Table");
frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
frame.getContentPane().add(new GridView());
frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
}
class RadioButtonUI extends BasicRadioButtonUI {
public Icon getDefaultIcon() {
return null;
}
private static Dimension size = new Dimension();
private static Rectangle rec1 = new Rectangle();
private static Rectangle rec2 = new Rectangle();
private static Rectangle rec3 = new Rectangle();

continue....
public synchronized void paint(Graphics g, JComponent c) {
AbstractButton b = (AbstractButton) c;
ButtonModel model = b.getModel();
Font f = c.getFont();
g.setFont(f);
FontMetrics fm = c.getFontMetrics(f);
Insets i = c.getInsets();
size = b.getSize(size);
rec1.x = i.left;
rec1.y = i.top;
rec1.width = size.width - (i.right + rec1.x);
rec1.height = size.height - (i.bottom + rec1.y);
rec2.x = rec2.y = rec2.width = rec2.height = 0;
rec3.x = rec3.y = rec3.width = rec3.height = 0;
String text = SwingUtilities.layoutCompoundLabel(c, fm, b.getText(),
null, b.getVerticalAlignment(), b.getHorizontalAlignment(), b
.getVerticalTextPosition(), b
.getHorizontalTextPosition(), rec1, rec2, rec3, 0);
if (c.isOpaque()) {
g.setColor(b.getBackground());
g.fillRect(0, 0, size.width, size.height);
}
if (text == null)
return;
g.setColor(b.getForeground());
if (!model.isSelected() && !model.isPressed() && !model.isArmed()
&& b.isRolloverEnabled() && model.isRollover()) {
g.drawLine(rec1.x, rec1.y + rec1.height, rec1.x + rec1.width,
rec1.y + rec1.height);
}
View v = (View) c.getClientProperty(BasicHTML.propertyKey);
if (v != null) {
v.paint(g, rec3);
} else {
paintText(g, b, rec3, text);
}
}
}
class Model extends DefaultTableModel {
Model() {
JTable table = new JTable(this);
addColumn("Name");
addColumn("Address");
try {
Class.forName("com.mysql.jdbc.Driver").newInstance();
Connection con = DriverManager.getConnection(
"jdbc:mysql://localhost:3306/register", "root", "root");
String query = "select * from data";
Statement st = con.createStatement();
ResultSet rs = st.executeQuery(query);
while (rs.next()) {
String name = rs.getString("name");
String address = rs.getString("address");
addRow(new Object[] { name, address });
}
} catch (Exception e) {
}
}
}