JAVA JTable数据模型的使用

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,在添加监听事件,完成功能。







  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值