要求:
1、用swing 中的 表格 将数据库中的数据 查询出来,并显示出来,还要求分页
2、红色字体的部分是标签,总页数 是动态的, 随着数据分的页数二改变;
3、点击按钮 第一页,显示第一页内容,如果当前就是第一页,则弹出对话框告知;
   其他几个按钮也要实现相应的功能;程序说明:
我 在 DAO 层 中 有 的 方法 :
public List<Score> getObjectAll(int start, int range) // Score, 是要显示数据的表名,这个方法是根据 给的初始值,和 结束值,查询中间的数据
public List<Score> getObjectAll() // 这个方法 能查出表中所有数据 public List<Score> getObjects(String sql, int start, int range) // 自己给SQL语句,查询想要找的数据我完成的功能:
我只用了getObjectAll(int start, int range) 这个方法,在程序刚一加载的时候,将第一页显示在表格中,其他的都没实现。难题:1、 下面的代码,是我用来向表格中添加数据的代码。我不知道如何编排 版面,稍做调整,程序中的控件就不显示了;
2、 不知道如何分页,每次分页的 start  和 range 的值 找不好;
3、 不知如何判断,当前页是 首页,或是 尾页,要如何 判断

table = new JTable();
model = new DefaultTableModel(new Object[]{"成绩编号", "学生编号", "学科编号", "成绩"}, 0);
List<Score> list = scoDAO.getObjectAll(start, range);//初始值start=1,range=5
for(Score s : list)
{
vdata = new Vector();
vdata.add(s.getScoreId());
vdata.add(s.getScoreStudId());
vdata.add(s.getScoreCurrId());
vdata.add(s.getScoreGrade());
model.addRow(vdata);
}
table.setModel(model);
add(new JScrollPane(table),BorderLayout.CENTER);界面是这样的:

解决方案 »

  1.   

    1数据改变时更改model,不要new table
    2range根据窗口大小缺省给用户一个值,比如10行。给用户一个选项,可以自定义每页多少行。
    3当前是第几页可以用int page记在窗口里。
    查询默认的显示第一页,然后根据具体操作改变page。
    比如:下一页page++,上一页page--;首页page=1;末页page=总行数/range(非整除+1)等等;
      

  2.   

    1.建议自己写个model,以对数据库变化敏感的、可滚动的结果集resultset为参数,跟数据库查询到的结果关联起来。
    2.分页的实现,可以先查询到结果的总数,然后每次从数据库中查询指定个数的结果行。、
    3、每一次查询后,更新model中的resultset,同时调用fireDataChanged函数(函数名记得不是很清楚了)来更新视图。
    在《JAVA核心技术2》上P332页有个ResultSetTableModel的例子,可能对你有点帮助,网上可以下载。
      

  3.   

    这块用报表控件,这个公司FineReport的设计器可以用来做格子控件,这些东西都封装好了,,如果开发cs程序,好像还是免费
    如果要自己实现,CatOnTower说的非常好