我所做的是一个职工信息管理界面,就是一个窗口。布局组成是:上方是职工信息显示(用JTable),下方是多个文本框,当鼠标点击表格指定记录时,文本框将获得JTable中的记录值。
此时如果对文本框中的信息进行修改后,就会将修改后的数据存入数据库进行更新。
更新后问题就来了,我的设计是窗口不关闭,点击“修改”按钮后,表格中的数据自动更新(和更新后的数据库同步)。
但实际是更改数据后,表格不会自动更新,而且更新后点击表中记录还会提示出错。
请问有什么方法可以让JTable中的信息自动更新吗?感激不尽……

解决方案 »

  1.   

    之前寫過類似功能,先清掉再新增。
    upperTable是一個JTableDefaultTableModel upperTableDTM = (DefaultTableModel)upperTable.getModel();
        while(upperTableDTM.getRowCount()>0){
            upperTableDTM.removeRow(0);
        }
    for(int i=0;i<100;i++){
        upperTableDTM.addRow(new Object[]{"000"+i, i*3000L, 0, 0});
    }
      

  2.   

    通知model更新。
    fireXXXX系列方法。在defaulttablemodel中已有默认实现。调用即可。
      

  3.   

    我已经查了相关文档,进行了些更改,截取一些关键代码并修改以便各位方便查看
    JTable table=new JTable();
    DefaultTableModel model=new DefaultTableModel(createTable1(),table2););//createTable1()方法能进行数据库查询,并将数据库中记录放入二维表中,返回值为二维表。table.setModel(model);//以下为点击“修改”按钮后的操作代码,仅贴关键部分
    model.setDataVector(createTable1(),table2;
    table.setModel(model);
    已经实现了更新,但实际情况是……
    本来表格由4行,更新后变为8行,原4行还是原来的记录(值没有更改),后4行是更新后的记录(值已更改)。如果再继续更新,表格变为12行,依次类推……我有些不解的是,setDataVector()方法是替代原来的实例,难道是table.setModel(model);这个方法的问题吗?
      

  4.   

    new JTable();
    DefaultTableModel model=new DefaultTableModel(createTable1(),table2););//createTable1()方法能进行数据库查询,并将数据库中记录放入二维表中,返回值为二维表。table.setModel(model);//以下为点击“修改”按钮后的操作代码,仅贴关键部分
    model.setDataVector(createTable1(),table2;
    table.setModel(model);
      

  5.   

    model.setDataVector(createTable1(),table2;
    少了个括号,不过我原代码是没有语法问题的,因为我不可能把全部代码放上来,所以是自己写代码传上来的。
    请大家帮我看问题就可以了,谢谢
      

  6.   

    上面的代码就是我自己查着API做的,可惜我水平不行,没找出原因,还请大家指教
      

  7.   

    问题我已经解决。
    记录重复的问题是我使用list集合获取数据库中值的时候,忘记清空了。
    表格的更新直接使用
    model.setDataVector(createTable1(),table2);
    table.setModel(model);
    就可以了!
    可能swing用的人少些吧,回答的人不多,呵呵