swing 表格模型增加删除行和列

package table;

import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Vector;
import java.util.concurrent.BrokenBarrierException;

import javax.swing.*;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableColumnModel;

public class Tab1 extends JFrame implements ActionListener{
	JTable jt1;
	DefaultTableModel tableM;
	JScrollPane jsp1;
	JButton jb1,jb2,jb3,jb4;
	JPanel jp1;
	public static void main(String[] args) {
		new Tab1();
	}
	Tab1(){
		String[] name = new String[]{"列1","列2","列3","列4","列5"};
		String[][] data = new String[5][5];
		int value = 1;
		for (int i=0; i<data.length; i++){
			for(int j=0; j<data[i].length; j++){
				data[i][j] = String.valueOf(value++);
			}
		}
		//初始化表格模型,设置表头和数据
		tableM = new DefaultTableModel(data, name);
		//初始化表格,与模型建立联系
		jt1 = new JTable(tableM);
		//把表格放入滚动窗中
		jsp1 = new JScrollPane(jt1);
	
		
		jb1 = new JButton("添加列");
		jb2 = new JButton("添加行");
		jb3 = new JButton("删除列");
		jb4 = new JButton("删除行");
		jp1 = new JPanel();
		this.add(jp1, BorderLayout.SOUTH);
		jp1.add(jb1);
		jp1.add(jb2);
		jp1.add(jb3);
		jp1.add(jb4);
		this.add(jsp1);
		
		jb1.addActionListener(this);
		jb2.addActionListener(this);
		jb3.addActionListener(this);
		jb4.addActionListener(this);
		this.setSize(400, 400);
		this.setVisible(true);
		this.setDefaultCloseOperation(EXIT_ON_CLOSE);
	}
	@Override
	//进行增加,删除表格都是对表格模型操作,与table无关
	public void actionPerformed(ActionEvent e) {
		if (e.getSource().equals(jb1)){
			tableM.addColumn("新增列");
		}
		//新增一行
		if (e.getSource().equals(jb2)){
			tableM.addRow(new Vector());
		}
		/**
		 * 删除列 做法: 先通过getColumnCount获取表格模型列数,通过 setColumnCount设置
		 * setColumnCount如果新大小   小于   当前大小,则将丢弃索引 columnCount 处及其之后的所有列
		 */
		if (e.getSource().equals(jb3)){
			int col = tableM.getColumnCount()-1;
			tableM.setColumnCount(col);
		}
		if (e.getSource().equals(jb4)){
			int row = tableM.getRowCount()-1;
			if(row < 0){
				return ;
			}
			tableM.removeRow(row);
		}
	}
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值