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) {
// 鼠标点击时的处理
}
});

JTable 的使用的更多相关文章

  1. swing中JTable的使用方法

    public static void main(String[] args) { Student s1 = new Student("张三", "001", 0 ...

  2. Jtable 表格按多列排序(支持中文汉字排序)

    这两天公司让做一个Jtable表格的排序,首先按A列排序,在A列相等时按B列排序,B列相等时按C列排序,ABC三列可以任意指定,最多分三列,这样的一个需求.由于我是大神,所以必须做了出来.ok,不自恋 ...

  3. Java — JTree and JTable以及sqlServer的两种连接

    使用JTree的步骤: 暂时只能创建一个头结点,创建一个树的结点作为头结点(其子结点也是相同的创建方法):DefaultMutableTreeNode headNode = new DefaultMu ...

  4. ABP JTable如何手动刷新子表数据

    function getSubMaster() { _$masterTable.find('.jtable-child-table-container').jtable('reload'); }

  5. jtable插件api

    官网2016-03-15 事例图: 一.客户端配置 1. paging boolean default:false 配置是否分页,果断改为true. 2. pageList string defaul ...

  6. ASP.NET ZERO 学习 JTable的使用子表闭合功能

    双击子表自动判定开闭功能 //CHILD TABLE DEFINITION FOR "PHONE NUMBERS" Phones: { title: '', width: '5%' ...

  7. ASP.NET ZERO 学习 JTable的ChildTable用法

    效果图: Jtable的子表用法: _$masterTable.jtable({ title: app.localize('PharmacyInventory'), openChildAsAccord ...

  8. jtable更新数据

    static JTable table; public void refrushTableData() { String[] columnNames = { " }; String[][] ...

  9. 实现Java JTable的应用案例

    代码如下 import Java.awt.Component; import java.awt.Dimension; import java.awt.FontMetrics; import javax ...

  10. JavaSE GUI显示列表 JTable的刷新 重新加载新的数据

    JTable在显示所有数据之后,假如需要搜索某个名字,则会获取新的列表数据. 假设datas是JTable的数据,定义为: private Vector<Vector> datas = n ...

随机推荐

  1. ActiveMQ讯息传送机制以及ACK机制

    http://blog.csdn.net/lulongzhou_llz/article/details/42270113 ActiveMQ消息传送机制以及ACK机制详解 AcitveMQ是作为一种消息 ...

  2. The Willpower Instinct

    https://book.douban.com/subject/7043452/ 1.冥想2.健康饮食(低GI.素食为主,未加工食物为主).低GI食物使血糖稳定(蛋白.麦片.粗纤谷类.豆类.水果蔬菜) ...

  3. kafka第三篇--安装使用

    说明:直接下载二进制包可省略安装过程,省略很多麻烦. 1单机 安装 安装过程,参考官网: > tar xzf kafka-<VERSION>.tgz > cd kafka-&l ...

  4. 【python】matplotlib在windows下安装

    昨晚装了好久的这玩意,终于在凌晨成功搞定,然后跑起了一个人人网抓取好友关系的脚本~开心. 以下是我参考的最给力的文档,全部安装一遍,就可以啦~ 但是!在安装前一定要先确认自己的python版本!本人自 ...

  5. highcharts柱状图和饼图的数据填充

    1.其实数据填充很简单,它们就是json的格式,然后后台按照这种格式去套数据发给前端:前端再做一下连接处理等就行了. $('#program_statistics_bar').highcharts({ ...

  6. POJ 2373 Yogurt factory

    简单DP. 这周所用的实际花费是上一周的花费+S与这周费用的较小值. #include<cstdio> #include<cstring> #include<cmath& ...

  7. STM32中的位带(bit-band)操作(转)

    源:STM32中的位带(bit-band)操作 支持了位带操作后,可以使用普通的加载/存储指令来对单一的比特进行读写.在 CM3 中,有两个区中实现了位带.其中一个是 SRAM 区的最低 1MB 范围 ...

  8. WCF必须使用证书验证吗

    你说的 ASP.NET Web Service在消息头里加个字段,服务端做验证,这个是可以的,但是无法保证传输的用户名和密码是加密安全的. 要求使用证书,也是强制服务器端,这里涉及到服务器身份鉴别的问 ...

  9. A股暴跌三日市值蒸发4.2万亿 股民人均浮亏超2万

    A股暴跌三日市值蒸发4.2万亿 股民人均浮亏超2万 http://finance.qq.com/a/20150508/010324.htm?pgv_ref=aio2015&ptlang=205 ...

  10. Linux之目录基本操作命令

    Linux之目录基本操作命令 目录基本操作命令 1.tree命令 tree命令以树状图列出目录的内容. 语法 tree(选项)(参数) 选项 1.-a显示所有文件和目录 2.-A使用ASNI绘图字符显 ...