JTable这个控件这几天在使用,发现比较实用,用于获取table表中的数据和显示数据。数据模型给我的感觉相当于一个集合,里面储放一些临时数据,用来获取和显示。如何实用JTable表呢?
重点在与理解监听事件,给想使用的按钮或鼠标事件添加监听,使这个功能完善。
数据模型的初始化
/**
* 定义一个显示图书数据的模型
*/
private class RecordDataModel implements TableModel{
//显示Rescord数据用于在表中实现
private List<Record> Rescords_list=null;
//这里设置Record值 get和set
public void setRescords_list(List<Record> rescords_list) {
Rescords_list = rescords_list;
}
@Override
public void addTableModelListener(TableModelListener arg0) {
}
//存进表格的数据,统一为String字符串
@Override
public Class<?> getColumnClass(int columnIndex) {
return String.class;
}
/**
* 设置多少个字段7个,列数
*/
@Override
public int getColumnCount() {
// TODO Auto-generated method stub
return 7;
}
/**
* 列段的名称
*/
@Override
public String getColumnName(int columnIndex) {
if(columnIndex==0)
{
return "借书编号";
}else if(columnIndex==1) {
return "用户id";
}else if(columnIndex==2)
{
return "名字id";
}else if(columnIndex==3) {
return "用户名";
}else if(columnIndex==4)
{
return "图书名";
}else if(columnIndex==5)
{
return "借书时间";
}else if(columnIndex==6)
{
return "还书时间";
}else {
return "出错";
}
}
/**
* 获取多少行,根据Rescords_list
*/
@Override
public int getRowCount() {
return Rescords_list.size();
}
/**
* 根据行号,列号获取数据
*/
@Override
public Object getValueAt(int rowIndex, int columnIndex) {
//这里的行号数在那里来的
System.out.println("rowIndex:"+rowIndex+" columnIndex:"+columnIndex);
Record record=Rescords_list.get(rowIndex);
if(columnIndex==0)
{
return record.getRecord_id();
}else if(columnIndex==1)
{
return record.getUser_id();
}else if(columnIndex==2)
{
return record.getBook_id();
}
else if(columnIndex==3)
{
return record.getUser_name();
}else if(columnIndex==4)
{
return record.getBook_name();
}else if(columnIndex==5)
{
return record.getLend_time();
}else if(columnIndex==6)
{
return record.getReturn_time();
}else {
return null;
}
}
@Override
public boolean isCellEditable(int arg0, int arg1) {
return false;
}
@Override
public void removeTableModelListener(TableModelListener arg0) {
}
@Override
public void setValueAt(Object aValue, int rowIndex, int columnIndex) {
}
}
给table表格添加监听器
//给table控件注册监听器
table.addMouseListener(new MouseAdapter() {
public void mouseClicked(MouseEvent e)
{
//获取用户选中图书的编号
int row_num1=table.getSelectedRow();
//返回单元格值row和column (第几行,第几列)
book_id=(int) table.getValueAt(row_num1, 0);
}
});
给table表加载数据
/**
* 设置更新table表的方法
*/
public void registerBookTable(List<Book> book)
{
ManageBookModel mbm=new ManageBookModel();
mbm.setList_book(book);
table.setModel(mbm);
}
即时更新的方法
/**
* 及时更新的方法
*/
public void registerBookTableWindow()
{
List<Book> book=null;
book=bookBiz.queryAll();
registerBookTable(book);
}
个人总结:Jtable主要就是学习设置数据模型TableModel,在添加监听事件,完成功能。