上一个文章讲到了数据的加在,通过页面管理类去实现数据的装载
//代码块,初始化时加载 static { try { s_data= ObjectArray.init_StuArray(); } catch (SQLException throwables) { throwables.printStackTrace(); } if(s_data.size()%pageSize==0){ allPage=s_data.size()/pageSize; //若总条数等于整数 }else allPage=(s_data.size()/pageSize)+1; }
使用静态代码块在类加载时将数据导入,并设置allPage总页数,通过所有数据%每页固定的数据条数计算获得。
接下来介绍一下页面管理类中的各个方法及作用
public S_PageController(int pageNow)
构造方法,参数为指定页码,旨在查看确定的某一页
public boolean isNextPage/isPreviousPage()
此方法返回一个布尔值,用于在翻页时进行辅助判断是否存在下一页
public Vector<Vector<Object>> nextPage/previousPage()
在点击下一页/上一页按钮时,程序做出反应并调用此函数完成数据的重新定位,但此函数并不实现数据的清空和重新载入,而是通过调用select方法进行操作
这个函数十分重要,它实现了对类初始化时代码块中读出的数据进行换页,并需要将当前页的集合清空,再重新进行数据的装入。
对于页面管理类的内容大概就讲这么多。
接下来就是方法的调用 ,在继承DefaultTableModel的这个类中,我们有一个assembleModel(Vector<Vector<Object>>data)方法。
并返回一个此类的一个引用,当然这个引用是需要定义的,我们就把他定义为私有的静态成员变量,这样就不用每次都去定义它了。
private static StudentTableModel studentTableModel=new StudentTableModel();
我采用的是比较简便的方法,将初始第一页的数据作为成员变量,并调用函数将数据装载进model中,再进行表格的创建,
当然如果数据更新的话肯定是需要重新设置model的,这就要重新再写一个函数来进行model的切换。以及通过按钮的点击事件,在实现监听器方法时调用页面管理类的相关方法实现页面数据的切换,是否存在下一页的判别等。
最后的实现效果就是这个样子
第二张是最后一页的效果,可见到最后一页的时候,下一页的按钮已经不存在了,即代表下一页
我们还可以通过右键菜单并定位到每一个学生,进行对他们数据的修改,修改后不要忘记重新设置model哦,不然不会秒同步更新。
有不懂的欢迎大家评论,有不对的地方更欢迎大家指出,谢谢。