Swing之JTable的一些常见的方法用法分享,我们用代码来说话

Swing之JTable的一些常见的方法用法分享,我们用代码来说话

今天足足一天都在了解JTable的用法

基本上把一些常用的方法给搞懂了

下面我们一一介绍,用代码来说话:

1:如何创建一个表格

创建一个表格至少需要四步

a、定义表格参数

b、将参数加入到表格模型

c、将表格模型加入到表格

d、将表格加入到滚动条组建(非必须)

e、将表格或滚动条加入到容器中

下面是代码实现


//创建一个表格
private JScrollPane creatTable(){
	Object[][] params = {{"1",new String(),new Integer(0),"","","","","",""},{"2",new String(),new Integer(0),"","","","","",""},{"3",new String(),new Integer(0),"","","","","",""},{"4","","","","","","","",""},{"5","","","","","","","",""}};
	String[] values = {"商品id","商品条码", "商品名称", "品种", "单位", "单价", "数量" , "状态","合计"};
	DefaultTableModel model = new DefaultTableModel(params,values);
	//将数据加载到table
	this.table = new JTable(model);
	//设置表的大小
	this.table.setPreferredScrollableViewportSize(new Dimension(820, 500));
	//将表格加入到滚动筐组件
	JScrollPane scrollPane = new JScrollPane(this.table);	
	return scrollPane;
}


上面的代码是我项目代码一部分,已精简后的代码

需要注意的是

表格模型的第一个参数是二维数组,每一维表示一行,第二个参数就是表头

2、如何禁止修改列

禁止修改列只需要重写isCellEditable方法即可

您可以在上面的代码中,修改表格模型即可

修改后的代码如下


DefaultTableModel model = new DefaultTableModel(params,values){
	/**
	 * 定义数据表格模型
	 */
	private static final long serialVersionUID = 1L;

	//isCellEditable重写这个方法,此列不可修改
	public boolean isCellEditable(int rowindex,int columnindex){ 
              if(columnindex == 3)   { 
              	return false; 
              } 
              return true; 
	}
};
以上代码表示第三列不可写,注意这里的3,表示第四列,就是列的第一位是0,我们只需要重写这个方法即可


3、如何隐藏列

有时候我们需要对一些列隐藏,比如用户id,商品id等信息

隐藏列的原理就是将单元列的最大宽和最小宽设置为0即可

如以下代码所示


//隐藏列
private void hidenColumn(int Column){
	TableColumn column = table.getTableHeader().getColumnModel().getColumn(Column);
	column.setMaxWidth(Column);		
	column.setPreferredWidth(Column);
	column.setWidth(Column);			//设置宽,通常我们只用上面setPreferredWidth设置
	column.setMinWidth(Column);
	table.getTableHeader().getColumnModel().getColumn(Column).setMaxWidth(0);
	table.getTableHeader().getColumnModel().getColumn(Column).setMinWidth(0);
	}
以上代码表示将Column行的文本区的单元格和表头的单元格都设置为了0


这样就达到了隐藏的效果了

4、如何获得选中的行

int[] row = this.table.getSelectedRows();
这里是获得选中的多行


方法如果是getSelectedRow()

getSelectedRow()
那获得就是一行,这一行一般都是最上面的那一行


5、如何获得单元格的内容

代码如下


table.getValueAt(row[0], 2)
表示获取选中的第一行第三列的值


6、如何获得当前单元格所在列,对应的表头参数

table.getTableHeader().getColumnModel().getColumn(2).getHeaderValue()
此代码表示了获取第三列的表头信息


7、如何获得当前选中单元格所在列的下标

列是可以拖动的,当然也可以设置不允许拖动

如果能拖动,拖动后我们如何获得单元格所在列的下标呢,请看下面的代码实现


table.getTableHeader().getColumnModel().getColumn(2).getModelIndex()
此代码表示获得第三列的下标,不管第三列最终是那一列,获取到的是最终你拖动的那一列的下标

比如以下代码获得的就是第三列的表头信息,下标信息,以及单元格内容(注意本例是隐藏了第一列)


[caption id="attachment_1415" align="alignnone" width="375"]JTable操作 2016-07-31 01-55-55 的屏幕截图 JTable操作[/caption]

以上两张图片展示了,

8、如何在JTable中创建鼠标右键菜单

您可以直接打开以下连接查看

如何在JTable中创建鼠标右键菜单


爆款云服务器s6 2核4G 低至0.46/天,具体规则查看活动详情Blog Img