急!求助:怎样刷新表格?(附源代码)

nt941 2003-08-15 09:37:35
想实现的效果:
一个Frame包含一个Panel,此Panel里有一个table,table的内容是根据数据库的内容显示的;Frame的下部有个Button,点击此Button后,数据库的内容即有改变,此时要求table刷新,把变化后的情况显示出来。
我现在不会让table刷新,即不会写Button的点击事件处理函数,请大家指教!谢谢!

附:源代码概况

生成包含table的JPanel的源文件:

public class ShowTablePanel extends JPanel{

public ShowTablePanel(String strSql){

……//数据库操作,由此构造tableModel
JTable table = new JTable(tableModel);
this.add(new JScrollPane(table));

}
}

在另一个文件中把这个窗口加入到一个Frame中:

public class FrameTest extends JFrame{

public FrameTest(){
String strSql = "select ....";
ShowTablePanel tablePanel = new ShowTablePanel(strSql);
this.getContentPane.add(tablePanel,BorderLayout.Center);
....
this.getContentPane.add(new JButton("刷新"),BorderLayout.South);
}

public static void main(String[] args) {
FrameTest fm = new FrameTest();
fm.setTitle("Table Test");
fm.setSize(500,400);
fm.setVisible(true);
}
}

...全文
163 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
nt941 2003-08-15
  • 打赏
  • 举报
回复
oldblue兄:
谢谢你的回复。
可是我setModel后没有repaint()表格也刷新了。
关于repaint()我一直比较迷惑,不知道什么时候该用它,如果你能在这里讲一下在下不胜感激!(至于分,我可以专门开一个帖子给您)
nt941 2003-08-15
  • 打赏
  • 举报
回复
cbhyk兄:
感谢!问题已解决,请接分!
非常感谢!
三合一 2003-08-15
  • 打赏
  • 举报
回复
setModel后调用一下repaint()
nt941 2003-08-15
  • 打赏
  • 举报
回复
谢谢楼上兄弟,马上去试!
cbhyk 2003-08-15
  • 打赏
  • 举报
回复
public refresh(String keyWord){
this.tableModel = new ResultSetTableModel(keyWord);/////
table.setModel(this.tableModel);
}
nt941 2003-08-15
  • 打赏
  • 举报
回复
谢谢 lighthead 兄指教!能说的详细点吗?
我的tableModel是这样的:
class ResultSetTableModel extends AbstractTableModel{
public ResultSetTableModel(String keyWord) throws SQLException {
....
}
}

即根据构造函数的参数keyWord在构造函数中构造出一查询数据库的sql语句,再由由此sql语句得到的ResultSet构造出ResultSetTableModel ,那么我怎么刷新这个ResultSetTableModel ?象下面这样改造上面第一段代码行不行?

public class ShowTablePanel extends JPanel{

private ResultSetTableModel tableModel;

public ShowTablePanel(String keyWord){

tableModel = new ResultSetTableModel(keyWord);/////
JTable table = new JTable(tableModel);
this.add(new JScrollPane(table));
}

//增加一个刷新的方法
public refresh(String keyWord){
this.tableModel = new ResultSetTableModel(keyWord);/////
}
}

然后需要刷新的时候调用上面这个类的对象的refresh(方法)。
这样能刷新吗?
nt941 2003-08-15
  • 打赏
  • 举报
回复
在线等呢,着急!请高人赐教!
lighthead 2003-08-15
  • 打赏
  • 举报
回复
我想应该是把内容重新写一遍到tablemodel里。
nt941 2003-08-15
  • 打赏
  • 举报
回复
对不起,后一段代码上面那句应为:“在另一个文件中把这个Panel加入到一个Frame中:”。

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧