java表格控件JTable常用操作详解
来源:互联网 发布:人民币国际化知乎 编辑:程序博客网 时间:2024/06/01 08:33
JTable是Swing编程中很常用的控件,其为显示大块数据提供了一种简单的机制。JTable有很多东西是用于数据的生成和编辑,其中的很多东西还可以自定义,从而更进一步增强其功能。
这里总结了一些常用方法以备查阅.
一.创建表格控件的各种方式:
1) 构造一个默认的 JTable,使用默认的数据模型、默认的列模型和默认的选择模型对其进行初始化。
JTable table = new JTable();
2) 以表头和表数据创建表格.
JTable(Object[][] rowData, Object[[] columnNames)
构造一个 JTable 来显示二维数组 rowData 中的值,其列名称为 columnNames.例如:创建一个两行两列的表格。
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) {
publicboolean isCellEditable(int row, int column) {
return false;
}
};
table = new JTable(model);
4)JTable(int numRows, int numColumns)
使用 DefaultTableModel 构造具有 numRows 行和 numColumns 列个空单元格的 JTable。
JTable table = new JTable(3,4);创建3行4列表格
二.对表格列的控制
1) 如果JTable的一个列或者JTable窗口自身的大小被重新确定,那么其他列会被相应的缩小或者放大,以适应新的窗口。使用setAutoResizeMode()方法就能够控制这种行为:
table.setAutoResizeMode(int mode);
mode整数字段可能的值有:
AUTO_RESIZE_OFF
AUTO_RESIZE_NEXT_COLUMN
AUTO_RESIZE_SUBSEQUENT_COLUMNS
AUTO_RESIZE_LAST_COLUMN
AUTO_RESIZE_ALL_COLUMNS
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(intpixelHeight);
各个单元格的高度将等于行的高度减去行间的距离。
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=newArrayList<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(MouseEvente) {
// 鼠标按下时的处理
}
publicvoid mouseReleased(MouseEvent e) {
// 鼠标松开时的处理
}
publicvoid mouseEntered(MouseEvent e) {
// 鼠标进入表格时的处理
}
publicvoid mouseExited(MouseEvent e) {
// 鼠标退出表格时的处理
}
publicvoid mouseClicked(MouseEvent e) {
// 鼠标点击时的处理
}
});
例子:
点击打开链接
这里我要讲下JTable的结构 a[][]就是一个i行j列的表,用来显示数据库中数据用的,而header[]是一个j列的表头,用来存储字段名称的,比如说上面的"学号","姓名"等字符串;
- java表格控件JTable常用操作详解
- java表格控件JTable常用操作详解
- java JTable表格自动换行
- Java - 表格JTable的用法
- Java Swing编程:JTable表格
- Java Swing编程:JTable表格
- java swing Jtable 自定义 表格
- JTable 表格中添加 JComboBox 控件
- 【Java】IO操作之将Jtable数据导出为Excel表格
- java中使用JTable控件
- java swing sql->jtable表格 查询
- java之显示JTable表格数据
- Java Swing (JTable详解1)
- Java Swing JTable 表格【1:创建表格填充数据】
- Java Swing JTable 表格【2:创建空表格】
- Java Swing JTable 表格【4:表格模型TableModel】
- Java Swing JTable 表格【5:表格模型AbstractTableModel】
- Java Swing JTable 表格【6:表格模型DefaultTableModel】
- php后台开发民生支付
- Android 使用Kotlin 和 DataBinding 遇到 not access class问题
- Android ApkDemo
- mysql学习总结(一)---如何查看mysql的安装路径
- 序列化
- java表格控件JTable常用操作详解
- NOI2006 最大获利
- Math
- Toast自定义显示时长的解决方案
- 常用微信集成(第三方sdk集成套路)-- 微信支付
- Android开发中在一个Activity中关闭另一个Activity
- 分布式消息队列
- 【用Cocos Creator给暗恋的女生写一个游戏(12)】——跨场景访问节点、存储数据、添加音效音乐、打包发布
- 【ios自动化测试】iOS自动化测试框架分析与选择