各位大侠:
    我写了一个数据库程序,将查询到的结果(table)显示在一个JScrollPane中;查询到第二次以后table再次显示在JScrollPane时数据会与第一次查询返回的table重叠;采用了scrollPane.setVisible(true);contentPane.remove(scrollPane)后,在JScrollPane中数据重叠消失了,但JScrollPane却不会滚动了。请问怎么解决。
附代码:public void opentable()
{
frame = SWT_AWT.new_Frame(composite);
panel = new Panel(new BorderLayout())
{
private static final long serialVersionUID = -4473097649948915740L; public void update(Graphics g)
{
paint(g);
}
};
panel.removeAll();
frame.add(panel);
frame.setVisible(true);
root = new JRootPane();
panel.add(root);
contentPane = root.getContentPane();
table = new JTable(rows, columnHeads);
table.setAutoResizeMode(0);
scrollPane = new JScrollPane(table);
scrollPane.setRowHeaderView(new RowHeaderTable(table, 40));
scrollPane.setVisible(true);
contentPane.add(scrollPane);
}
table为每次查询数据库返回的结果集

解决方案 »

  1.   

    你数据库的数据,最终是显示到你的JTable里面去的。你只需要清空你的JTable,然后再查询一次,再放到你的JTable里面就行了。不关JScrollPane的事。它只是一个滚动条而已。你何必为难它呢。是不。
      

  2.   

    我用jtable控件从数据库里提取数据,现在查询条件变化,需要把原有数据快速清除,并显示出来新的数据,请问用哪种方法,哪种方法能够提高速度呢?知道的请回答,谢谢! 
      

  3.   

    每次查询前判断,如果JTable有数据,则先做清空JTable操作,然后再查询显示数据到JTable。
      

  4.   

    清空JTable用removeAll();好像不管用啊,我用的是new JTable(rows, columnHeads);
    没有用DefaultTableModel。
      

  5.   

    用了removeAll()好像不行,不能清空,我的数据模型没用DefaultTableModel。
      

  6.   

    为何每次清空JTable的内容后,重新将数据库数据放入table中,移动JScrollPane工具条是列标题可以移动,表格内容却不随标题移动?
    if(lastQuery)//如果查询成功清除表格
    {

    ((DefaultTableModel)maintable.getModel()).getDataVector().clear();
    ((DefaultTableModel)maintable.getModel()).fireTableDataChanged();
    maintable.repaint();

    }



    //查询后的数据放入jtable,再放入JScrollpane
    maintable = new JTable(rows, columnHeads);
    System.out.println(columnHeads+"\n");
    maintable.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
    scrollPane = new JScrollPane(maintable);
    scrollPane.setRowHeaderView(new RowHeaderTable(maintable, 40));
    contentPane.add(scrollPane);