JTable学习

一、通过实现TableModel实现JTable的制作

TableModel接口有一下可实现的方法

	@Override
	public int getRowCount() { //得到行总数
	}

	@Override
	public int getColumnCount() { //得到列总数	
	}

	@Override
	public Class<?> getColumnClass(int columnIndex) {  //得到要加载的对象类型	
	}
	
	@Override
	public Object getValueAt(int rowIndex, int columnIndex) { // 得到每一行的元素
	}
	
	@Override
	public String getColumnName(int columnIndex) { //得到列名
	}
	
	@Override
	public boolean isCellEditable(int rowIndex, int columnIndex) { //判断表格是否可编辑
	}

	@Override
	public void setValueAt(Object aValue, int rowIndex, int columnIndex) {//设置rowIndex和columnIndex位置的值
	}

	@Override
	public void addTableModelListener(TableModelListener l) {// 每当数据模型发生更改时,就将一个侦听器添加到被通知的列表中。	
	}

	@Override
	public void removeTableModelListener(TableModelListener l) {//每当数据模型发生更改时,就从被通知的列表中移除一个侦听器。		
	}
二、用一个类实现TableModel里面的方法
public class MyTableModel implements TableModel{
    //当前的总列数
//	public String[] columns_value;
	//当前的总行数
	public static String[][] rows_value; //这里设置成静态的,以便调用
	
	public MyTableModel(int row, int column) {//从外部传入参数控制表格的行数和列数
		
		rows_value = new String[row][column];
		//通过for循环添加图片路径
		//创建一个随机对象,实现随机的加载图片
		Random ran = new Random();
		for(int i=0;i<rows_value.length/2;i++){
			for(int j=0;j<rows_value[i].length;j++){
				int count = ran.nextInt(row)+1;
				rows_value[i][j] = "images/"+count+".png";//将图片保存到二维数组里面
				rows_value[rows_value.length/2+i][j] = "images/"+count+".png";
			}
		}
		//打乱顺序
		for(int i=0;i<rows_value.length;i++){//实现图片的随机放置
			for(int j=0;j<rows_value[i].length;j++){
				int a = ran.nextInt(row);
				int b = ran.nextInt(row);
				String temp = rows_value[i][j];
				rows_value[i][j] = rows_value[a][b];
				rows_value[a][b] =temp;
			}
		}
	}
	
	
	@Override
	public int getRowCount() { //得到行数
		return rows_value.length;
	}

	@Override
	public int getColumnCount() { //得到列数
		return rows_value[0].length;
	}

	@Override
	public Class<?> getColumnClass(int columnIndex) {  //得到要加载的对象类型
		return javax.swing.ImageIcon.class;
	}
	
	@Override
	public Object getValueAt(int rowIndex, int columnIndex) { // 得到每一行的元素
		ImageIcon icon = new ImageIcon(rows_value[rowIndex][columnIndex]);
		return icon;
	}

	
	
	@Override
	public String getColumnName(int columnIndex) { //得到列名
		return null;
	}
	
	@Override
	public boolean isCellEditable(int rowIndex, int columnIndex) { //判断表格是否可编辑
		// TODO Auto-generated method stub
		return false;
	}

	@Override
	public void setValueAt(Object aValue, int rowIndex, int columnIndex) {//设置rowIndex和columnIndex位置的值
		// TODO Auto-generated method stub
		
	}

	@Override
	public void addTableModelListener(TableModelListener l) {// 每当数据模型发生更改时,就将一个侦听器添加到被通知的列表中。
		// TODO Auto-generated method stub
		
	}

	@Override
	public void removeTableModelListener(TableModelListener l) {//每当数据模型发生更改时,就从被通知的列表中移除一个侦听器。
		// TODO Auto-generated method stub
	}<pre name="code" class="html">
}

 实现JTable的是的制作 
MyTableModel model = new MyTableModel(10, 10);
JTable table = new JTable(model);
this.add(table);//在当前的窗体或面板上添加table
二、通过DefaultTableModel实现JTable的制作

(1)、DefaultTableModel是默认的Table模型,它较TableModel接口更容易操作,只需要在构造方法里面传入数据加列名就能创建出表格的模型。

(2)、DefaultTableModel里面比较常用的构造方法

1、DefaultTableModel(Object[][] data, Object[] columnNames) 
//构造一个 DefaultTableModel,并通过将 data 和 columnNames 传递到 setDataVector 方法来初始化该表。

2、DefaultTableModel(Vector data, Vector columnNames) 
   // 构造一个 DefaultTableModel,并通过将 data 和 columnNames 传递到 setDataVector 方法来初始化该表。

<span style="font-size:18px;">Vector<String>  data = new Vector<String>();//一般用来存储表格里面要存储的数据
		Vector<String>  columnNames = new Vector<String>();//一般用来存储列名
		
		DefaultTableModel model = new DefaultTableModel(data, columnNames);//定义表格模型相当于定义了表格的
		JTable table = new JTable(model);//表格要做的事就是添加到窗体或面板上,当然表也有它自己的方法去实现特定的功能
		frame.add(table);</span>


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值