在Java表格中刷新数据
1、窗体frame中有一个表格和按钮,运行后,表格从数据库中查出30数据,并显示到表格中
2、点击按钮后表格开始刷新,每隔500ms从后台读取一条数据刷新到表格中,
3、表格显示的数据行数固定在30条
本人在第2项的时候卡住了,不知道怎么个思路不断刷新表格,
我是用的是继承AbstractTableModel,重写几个必要的方法,在这个类中,使用数据的形式添加了表头和内容,刷新表格的代码不能实现。只能简单的从数据库中刷出30条记录放到表格中,不能实现1条的刷新
1、窗体frame中有一个表格和按钮,运行后,表格从数据库中查出30数据,并显示到表格中
2、点击按钮后表格开始刷新,每隔500ms从后台读取一条数据刷新到表格中,
3、表格显示的数据行数固定在30条
本人在第2项的时候卡住了,不知道怎么个思路不断刷新表格,
我是用的是继承AbstractTableModel,重写几个必要的方法,在这个类中,使用数据的形式添加了表头和内容,刷新表格的代码不能实现。只能简单的从数据库中刷出30条记录放到表格中,不能实现1条的刷新
import java.util.*;
import javax.swing.*;
import javax.swing.table.*; public class TF extends JFrame {
JPanel jp=(JPanel)this.getContentPane();
JScrollPane productjsp = new JScrollPane();
public static JTable mattertb = new JTable();
public static DefaultTableModel matterb = new DefaultTableModel();
public TF()
{
java.util.Timer timer = new java.util.Timer();
timer.schedule(new TimerTask() {
public void run() {
try {
ref();//定时刷新
} catch (Exception e) {
e.printStackTrace();
}
}
}, 0, 1000);//定时器,定时时间1秒(1000ms)
jbInit();
}
public void ref()
{
String[] header={"序号","数据一","数据二"}; //换成你的DAO封装方法调用数据
Object[][] data=new Object[30][3];
for(int i=0;i<30;i++)
{
data[i][0]=i+1;
for(int j=0;j<2;j++)
{
Random rand=new Random();
data[i][j+1]=rand.nextInt(100);
}
}
matterb.setDataVector(data, header);
mattertb.setModel(matterb);
}
public void jbInit()
{
String[] header={"序号","数据一","数据二"}; //换成你的DAO封装方法调用数据
Object[][] data=new Object[30][3];
for(int i=0;i<30;i++)
{
data[i][0]=i+1;
for(int j=0;j<2;j++)
{
Random rand=new Random();
data[i][j+1]=rand.nextInt(100);
}
}
matterb.setDataVector(data, header);
mattertb.setModel(matterb);
mattertb.getTableHeader().setPreferredSize(new Dimension(1,25));
mattertb.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
mattertb.setRowHeight(25);
productjsp.getViewport().add(mattertb);
jp.add(productjsp, java.awt.BorderLayout.CENTER);
}
public static void main(String[] args) {
TF frame=new TF();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(800,600);
frame.setVisible(true);
}
}
select * from ytable limit 30 order by id desc(mysql)
select top 10 * from ytable order by id desc (mssql都忘记怎么写了)
(假设你的id为主键,自动添加,那么数据的先后可以通过id判断)。那么这个查询每次都是查询最新的30条数据。
那么把这块的数据替换成你结果集查询出来的这最新30调数据即可: public void ref()
{
String[] header={"序号","数据一","数据二"}; //换成你的DAO封装方法调用数据
Object[][] data=new Object[30][3];
for(int i=0;i<30;i++)
{
data[i][0]=i+1;
for(int j=0;j<2;j++)
{
Random rand=new Random();
data[i][j+1]=rand.nextInt(100);//这些数据替换成你的最新数据即可。
}
}
matterb.setDataVector(data, header);
mattertb.setModel(matterb);
}