望高手赐教!!!!!!!!!!!!!!!!
实现:程序启动时,即启动线程ThreadUpdata.
目的:使table数据不断更新线程的类
public class ThreadUpdate extends Thread
{
FrmMain mainFrm = null; public ThreadUpdate(FrmMain mainFrm)
{
this.mainFrm = mainFrm;
} public void run()
{
while (true)
{
try
{
mainFrm.refreshTable();
//刷新主窗体中table数据 实现方法见下
sleep(1000);
}
catch (InterruptedException e)
{}
}
}
}
主窗体的类
public class FrmMain extends JFrame
{ .
.
.
public void refreshTable()
{
this.tableModel.setRowCount(0);
this.tableModel.fireTableDataChanged();
String sql = new String();
sql = "select t.Name from Test t";
Vector queryData = new Vector();
Vector rowData = new Vector();
queryData = DBAccess.getInstance().executeQuerySQL();
//注本方法为执行Sql以Vector形式返回数据
for (int i=0; i<queryData.size(),i++)
{
rowData = (Vector)queryData.elementAt(i);
tableModel.addRow(rowData);
}
}
table.setModel(tableModel);}

解决方案 »

  1.   

    table.setModel(tableModel); 此句属于方法refreshTable。
    特此更正
      

  2.   

    ThreadUpdate类 应该被第三者所调用(new ThreadUpdate)才能实现所谓的多线程,现在你的程序只是在ThreadUpdate 这个线程中调用jtable更新而已。
      

  3.   

    是这样子的,主函数如下:
    public static void main(String[] args)
    {
    FrmMain mainFrm = new FrmMain();
    mainFrm.setVisible(true);
    ThreadUpdate thread = new ThreadUpdate(mainFrm);
    thread.start();
    }
    也就是说,程序启动时线程(thread已经启动)
    /////////////////////////////////////////
    //
    //应该合情合理。楼上大哥的话我不是很明白
    //请详细赐教
    //我觉得问题不再这里
    //
    ////////////////////////////////////////
      

  4.   

    谢谢各位的光临,使我误用关键字synchronized于方法refreshTable()来着均有分。