文档章节

JTable 使用细讲

zchuanzhao
 zchuanzhao
发布于 2015/09/29 23:12
字数 765
阅读 37
收藏 1
JTable是Swing编程中很常用的控件,这里总结了一些常用方法以备查阅. 一.创建表格控件的各种方式: 1) 调用无参构造函数. JTable table = new JTable(); 2) 以表头和表数据创建表格. Object[][] cellData = {{"row1-col1", "row1-col2"},{"row2-col1", "row2-col2"}}; String[] columnNames = {"col1", "col2"};   JTable table = new JTable(cellData, columnNames); 3) 以表头和表数据创建表格,并且让表单元格不可改. String[] headers = { "表头一", "表头二", "表头三" }; Object[][] cellData = null; DefaultTableModel model = new DefaultTableModel(cellData, headers) { public boolean isCellEditable(int row, int column) { return false; } }; table = new JTable(model); 二.对表格列的控制 1) 设置列不可随容器组件大小变化自动调整宽度. table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF); 2) 限制某列的宽度. TableColumn firsetColumn = table.getColumnModel().getColumn(0); firsetColumn.setPreferredWidth(30); firsetColumn.setMaxWidth(30); firsetColumn.setMinWidth(30); 3) 设置当前列数. DefaultTableModel tableModel = (DefaultTableModel) table.getModel(); int count=5; tableModel.setColumnCount(count); 4) 取得表格列数 int cols = table.getColumnCount(); 5) 添加列 DefaultTableModel tableModel = (DefaultTableModel) table.getModel(); tableModel.addColumn("新列名"); 6) 删除列 table.removeColumn(table.getColumnModel().getColumn(columnIndex));// columnIndex是要删除的列序号 三.对表格行的控制 1) 设置行高 table.setRowHeight(20); 2) 设置当前航数 DefaultTableModel tableModel = (DefaultTableModel) table.getModel(); int n=5; tableModel.setRowCount(n); 3) 取得表格行数 int rows = table.getRowCount(); 4) 添加表格行 DefaultTableModel tableModel = (DefaultTableModel) table.getModel(); tableModel.addRow(new Object[]{"sitinspring", "35", "Boss"}); 5) 删除表格行 DefaultTableModel tableModel = (DefaultTableModel) table.getModel(); model.removeRow(rowIndex);// rowIndex是要删除的行序号 四.存取表格单元格的数据 1) 取单元格数据 DefaultTableModel tableModel = (DefaultTableModel) table.getModel(); String cellValue=(String) tableModel.getValueAt(row, column);// 取单元格数据,row是行号,column是列号 2) 填充数据到表格. 注:数据是Member类型的链表,Member类如下: public class Member{ // 名称 private String name; // 年龄 private String age; // 职务 private String title; } 填充数据的代码: public void fillTable(List<Member> members){ DefaultTableModel tableModel = (DefaultTableModel) table .getModel(); tableModel.setRowCount(0);// 清除原有行   // 填充数据 for(Member member:members){ String[] arr=new String[3]; arr[0]=member.getName(); arr[1]=member.getAge(); arr[2]=member.getTitle(); // 添加数据到表格 tableModel.addRow(arr); } // 更新表格 table.invalidate(); } 2) 取得表格中的数据 public List<Member> getShowMembers(){ List<Member> members=new ArrayList<Member>(); DefaultTableModel tableModel = (DefaultTableModel) table .getModel(); int rowCount=tableModel.getRowCount(); for(int i=0;i<rowCount;i++){ Member member=new Member(); member.setName((String)tableModel.getValueAt(i, 0));// 取得第i行第一列的数据 member.setAge((String)tableModel.getValueAt(i, 1));// 取得第i行第二列的数据 member.setTitle((String)tableModel.getValueAt(i, 2));// 取得第i行第三列的数据   members.add(member); } return members; } 五.取得用户所选的行 1) 取得用户所选的单行 int selectRows=table.getSelectedRows().length;// 取得用户所选行的行数 DefaultTableModel tableModel = (DefaultTableModel) table.getModel(); if(selectRows==1){ int selectedRowIndex = table.getSelectedRow(); // 取得用户所选单行 .// 进行相关处理 } 2) 取得用户所选的多行 int selectRows=table.getSelectedRows().length;// 取得用户所选行的行数 DefaultTableModel tableModel = (DefaultTableModel) table.getModel(); if(selectRows>1) int[] selRowIndexs=table.getSelectedRows();// 用户所选行的序列   for(int i=0;i<selRowIndexs.length;i++){ // 用tableModel.getValueAt(row, column)取单元格数据 String cellValue=(String) tableModel.getValueAt(i, 1); } } 六.添加表格的事件处理 view.getTable().addMouseListener(new MouseListener() { public void mousePressed(MouseEvent e) { // 鼠标按下时的处理 } public void mouseReleased(MouseEvent e) { // 鼠标松开时的处理 } public void mouseEntered(MouseEvent e) { // 鼠标进入表格时的处理 } public void mouseExited(MouseEvent e) { // 鼠标退出表格时的处理 } public void mouseClicked(MouseEvent e) { // 鼠标点击时的处理 } });

© 著作权归作者所有

zchuanzhao

zchuanzhao

粉丝 50
博文 244
码字总数 145913
作品 1
福州
程序员
私信 提问
swing如何获取容器中组件的实例

问题是这样的 有一个JTabbedPane里面加了很多个标签,每个标签里面是一个JTable 现在有一个事件会触发 刷新所有也签中的JTable的数据。 请问有什么方法可以遍历这个JTabbedPane中所有的JTabl...

zzbutcher
2014/06/23
749
0
Java Swing控件样式设置

1.设置JTable的背景色 一般情况下,设置JTable背景色的时候,只能设置有数据行的背景色,对于默认的底色部分还是没法设置,默认为灰色,这时需要设置JTable上层容器jScrollPane1的背景色才能...

YuanyuanL
2014/08/01
1K
0
在JTable中,点击表头实现排序?

private JTable table=new JTable(); // 存放DefaultTableModel private DefaultTableModel tableModel=new DeafaultTableModel() // 存放数据 TableRowSorter tableRowSorter=new TableRow......

wangaowell
2013/09/13
2.8K
2
用JTree子节点触发添加一个JTabbedPane选项卡

用AWT/Swing写了一个签到系统,遇到一个问题百思不得其解啊- - 编写的服务端界面分为三块,左上为一个JTree的面板,左下是一个JTable的面板,右边是一个JEditorPane用来显示客户端和服务端操...

Loblood
2011/09/19
1K
1
介绍几种方法将Excel格式的文件导入到JTable中

How to import Excel file into JTable Here are three way to do this. Use "JTableReadTableModelTask " to do this. ( recommended ) Use "ReadTableModelTask" to do this Use ModelIO t......

fralepg
2009/02/21
518
0

没有更多内容

加载失败,请刷新页面

加载更多

mysql概览

学习知识,首先要有一个总体的认识。以下为mysql概览 1-架构图 2-Detail csdn |简书 | 头条 | SegmentFault 思否 | 掘金 | 开源中国 |

程序员深夜写bug
今天
7
0
golang微服务框架go-micro 入门笔记2.2 micro工具之微应用利器micro web

micro web micro 功能非常强大,本文将详细阐述micro web 命令行的功能 阅读本文前你可能需要进行如下知识储备 golang分布式微服务框架go-micro 入门笔记1:搭建go-micro环境, golang微服务框架...

非正式解决方案
今天
4
0
前端——使用base64编码在页面嵌入图片

因为页面中插入一个图片都要写明图片的路径——相对路径或者绝对路径。而除了具体的网站图片的图片地址,如果是在自己电脑文件夹里的图片,当我们的HTML文件在别人电脑上打开的时候图片则由于...

被毒打的程序猿
今天
5
0
Flutter 系列之Dart语言概述

Dart语言与其他语言究竟有什么不同呢?在已有的编程语言经验的基础上,我们该如何快速上手呢?本篇文章从编程语言中最重要的组成部分,也就是基础语法与类型变量出发,一起来学习Dart吧 一、...

過愙
今天
3
0
rime设置为默认简体

转载 https://github.com/ModerRAS/ModerRAS.github.io/blob/master/_posts/2018-11-07-rime%E8%AE%BE%E7%BD%AE%E4%B8%BA%E9%BB%98%E8%AE%A4%E7%AE%80%E4%BD%93.md 写在开始 我的Arch Linux上......

zhenruyan
今天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部