对数据进行分页,显示到table中

我最先用jframe编程的时候写的比较简单,只是先查询到所有记录,再根据当前页码筛选出当前页的记录,返回的小集合可以直接显示到table上。

    import java.util.ArrayList;  
    import java.util.List;  
    import com.yu.entity.User;  
    public class PageController {  
           private List<User> bigList=new ArrayList<User>(); //大集合,从外界获取   
           private List<User> smallList=new ArrayList<User>(); //小集合,返回给调用它的类  
           private static int curentPageIndex=1;        //当前页码                    
           private int countPerpage=10;        //每页显示条数  
           private int pageCount;           //总页数  
           private int recordCount;           //总记录条数  
             
           //初始化块,调用类的时候首先自动加载  
           {   
               //调用查询数据库的方法,返回一个List  
               this.bigList = new Utils().query();  
               //计算总页数  
               if (bigList.size()%countPerpage==0) {  
                   this.pageCount=bigList.size()/countPerpage;  
               } else {  
                   this.pageCount=(bigList.size()/countPerpage)+1;  
               }  
           }  
            
           public  PageController() {  
                
           }  
           //传入指定页码的构造函数,参看第几页。  
           public PageController(int curentPageIndex){  
               this.curentPageIndex=curentPageIndex;  
           }  
             
           //确切的获取当前页的记录,返回一个list列表  
           public List<User> setCurentPageIndex() {       
                   
                  return select();  
           }  
          
           //下一页  
           public List<User> nextPage() {  
                 
                if (curentPageIndex < pageCount ) {  
                     curentPageIndex++;  
                     System.out.println("当前页:"+curentPageIndex);  
                }   
                return select();    
           }  
          //上一页  
          public List<User> previousPage() {  
                if (curentPageIndex > 1) {  
                      curentPageIndex--;  
                      System.out.println("当前页:"+curentPageIndex);  
                }  
                
               return select();  
          }  
          //此方法供以上方法调用,根据当前页,筛选记录  
          public List<User> select(){  
                
              recordCount=bigList.size();  
              for(int i=(curentPageIndex-1)*countPerpage; i<curentPageIndex*countPerpage&&i<recordCount; i++){  
                     smallList.add(bigList.get(i));  
              }   
              
              return smallList;  
          }  
           
    }  

下面是写在jframe中的内容,调用分页方法。

           //查询上一页  
    private void jButton8ActionPerformed(java.awt.event.ActionEvent evt) {  
        List<User> newlist = new PageController().previousPage();  
        viewAll(newlist);  
    }  
      
    //返回第一页的记录  
    private void jButton10ActionPerformed(java.awt.event.ActionEvent evt) {  
        List<User> newlist = new PageController(1).setCurentPageIndex();  
        viewAll(newlist);  
    }  
      
    //查询下一页  
    private void jButton9ActionPerformed(java.awt.event.ActionEvent evt) {  
        List<User> newlist = new PageController().nextPage();  
        viewAll(newlist);  
    }  
         //显示List中的用户  
    public void viewAll(List<User> list) {  
        Object[][] objects = new Object[(list.size())][];  
        for (int i = 0; i < objects.length; i++) {  
            objects[i] = new Object[3];  
            objects[i][0] = i + 1;  
            objects[i][1] = list.get(i).getUserid();  
            objects[i][2] = list.get(i).getTruename();  
        }  
        jTable1.setModel(new javax.swing.table.DefaultTableModel(objects,  
                new String[] { "行号", "工号", "姓名" }));  
    }  

 

转载于:https://www.cnblogs.com/jrc2016/articles/6238261.html

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值