منتدى مصر التقني
هل تريد التفاعل مع هذه المساهمة؟ كل ما عليك هو إنشاء حساب جديد ببضع خطوات أو تسجيل الدخول للمتابعة.

ترقيم الصفحات فى جدول البيانات Jtable Pagination

اذهب الى الأسفل

ترقيم الصفحات فى جدول البيانات  Jtable Pagination Empty ترقيم الصفحات فى جدول البيانات Jtable Pagination

مُساهمة من طرف م/موسي الأربعاء نوفمبر 20, 2019 7:44 pm

ترقيم الصفحات هو أبسط طريقة  للتعامل مع كمية كبيرة من سجلات قاعدة البيانات. يقوم بتقسيم البيانات إلى عدة أجزاء يمكن التحكم فيها. هنا ، سنقوم بإنشاء صفحات الترحيل وعرض السجلات في JTable باستخدام java swing. عند النقر فوق رؤوس JTable ، سيتم فرز السجلات أيضًا.


ترقيم الصفحات فى جدول البيانات  Jtable Pagination 1815.paging

الكود :

الكود:

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();
   }

   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();

   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) {
      }
   }
}
م/موسي
م/موسي
الاشراف
الاشراف

تاريخ التسجيل : 18/02/2011
المساهمات : 178
النقاط : 346
التقيم : 12
الدولة : تونس
الجنس : ذكر

الرجوع الى أعلى الصفحة اذهب الى الأسفل

الرجوع الى أعلى الصفحة

ََ

مواضيع ذات صلة


 
صلاحيات هذا المنتدى:
لاتستطيع الرد على المواضيع في هذا المنتدى