JTable 的使用

JTable是Swing编程中的一种控件。

一.创建表格控件的各种方式:
1) 调用无参构造函数.

1 JTable table = new JTable();

2) 以表头和表数据创建表格.

1 Object[][] cellData = {{"row1-col1", "row1-col2"},{"row2-col1", "row2-col2"}};
2 String[] columnNames = {"col1", "col2"};
3 JTable table = new JTable(cellData, columnNames);

3) 以表头和表数据创建表格,并且让表单元格不可改.

 1 String[] headers = { "表头一", "表头二", "表头三" };
 2 Object[][] cellData = null;
 3
 4 DefaultTableModel model = new DefaultTableModel(cellData, headers) {
 5
 6 public boolean isCellEditable(int row, int column) {
 7     return false;
 8 }
 9 };
10
11 table = new JTable(model);

二.对表格列的控制
1) 设置列不可随容器组件大小变化自动调整宽度.

1 table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);

2) 限制某列的宽度.

1 TableColumn firsetColumn = table.getColumnModel().getColumn(0);
2 firsetColumn.setPreferredWidth(30);
3 firsetColumn.setMaxWidth(30);
4 firsetColumn.setMinWidth(30);

3) 设置当前列数.

1 DefaultTableModel tableModel = (DefaultTableModel) table.getModel();
2 int count=5;
3 tableModel.setColumnCount(count);

4) 取得表格列数

1 int cols = table.getColumnCount();

5) 添加列

1 DefaultTableModel tableModel = (DefaultTableModel) table.getModel();
2 tableModel.addColumn("新列名");

6) 删除列

1 table.removeColumn(table.getColumnModel().getColumn(columnIndex));// columnIndex是要删除的列序号

三.对表格行的控制
1) 设置行高

1 table.setRowHeight(20);

2) 设置当前航数

1 DefaultTableModel tableModel = (DefaultTableModel) table.getModel();
2 int n=5;
3 tableModel.setRowCount(n);

3) 取得表格行数

1 int rows = table.getRowCount();

4) 添加表格行

1 DefaultTableModel tableModel = (DefaultTableModel) table.getModel();
2 tableModel.addRow(new Object[]{"sitinspring", "35", "Boss"});

5) 删除表格行

DefaultTableModel tableModel = (DefaultTableModel) table.getModel();
model.removeRow(rowIndex);// rowIndex是要删除的行序号

四.存取表格单元格的数据
1) 取单元格数据

1 DefaultTableModel tableModel = (DefaultTableModel) table.getModel();
2 String cellValue=(String) tableModel.getValueAt(row, column);// 取单元格数据,row是行号,column是列号

2) 填充数据到表格.
注:数据是Member类型的链表,Member类如下:

 1 public class Member{
 2     // 名称
 3     private String name;
 4
 5     // 年龄
 6     private String age;
 7
 8     // 职务
 9     private String title;
10 }
11 填充数据的代码:
12 public void fillTable(List<Member> members){
13 DefaultTableModel tableModel = (DefaultTableModel) table
14 .getModel();
15 tableModel.setRowCount(0);// 清除原有行
16
17 // 填充数据
18 for(Member member:members){
19     String[] arr=new String[3];
20     arr[0]=member.getName();
21     arr[1]=member.getAge();
22     arr[2]=member.getTitle();
23
24     // 添加数据到表格
25     tableModel.addRow(arr);
26 }
27
28 // 更新表格
29 table.invalidate();
30 }

2) 取得表格中的数据

 1 public List<Member> getShowMembers(){
 2 List<Member> members=new ArrayList<Member>();
 3
 4 DefaultTableModel tableModel = (DefaultTableModel) table
 5 .getModel();
 6
 7 int rowCount=tableModel.getRowCount();
 8
 9 for(int i=0;i<rowCount;i++){
10     Member member=new Member();
11
12     member.setName((String)tableModel.getValueAt(i, 0));// 取得第i行第一列的数据
13     member.setAge((String)tableModel.getValueAt(i, 1));// 取得第i行第二列的数据
14     member.setTitle((String)tableModel.getValueAt(i, 2));// 取得第i行第三列的数据
15
16     members.add(member);
17 }
18
19 return members;
20 }

五.取得用户所选的行
1) 取得用户所选的单行

1 int selectRows=table.getSelectedRows().length;// 取得用户所选行的行数
2 DefaultTableModel tableModel = (DefaultTableModel) table.getModel();
3
4 if(selectRows==1){
5 int selectedRowIndex = table.getSelectedRow(); // 取得用户所选单行
6
7 .// 进行相关处理
8 }

2) 取得用户所选的多行

 1 int selectRows=table.getSelectedRows().length;// 取得用户所选行的行数
 2 DefaultTableModel tableModel = (DefaultTableModel) table.getModel();
 3
 4 if(selectRows>1)
 5 int[] selRowIndexs=table.getSelectedRows();// 用户所选行的序列
 6
 7 for(int i=0;i<selRowIndexs.length;i++){
 8     // 用tableModel.getValueAt(row, column)取单元格数据
 9     String cellValue=(String) tableModel.getValueAt(i, 1);
10 }
11 }

六.添加表格的事件处理

 1 view.getTable().addMouseListener(new MouseListener() {
 2 public void mousePressed(MouseEvent e) {
 3     // 鼠标按下时的处理
 4 }
 5
 6 public void mouseReleased(MouseEvent e) {
 7     // 鼠标松开时的处理
 8 }
 9
10 public void mouseEntered(MouseEvent e) {
11     // 鼠标进入表格时的处理
12 }
13
14 public void mouseExited(MouseEvent e) {
15     // 鼠标退出表格时的处理
16 }
17
18 public void mouseClicked(MouseEvent e) {
19     // 鼠标点击时的处理
20 }
21 });

JTable 的使用

时间: 2024-10-29 12:26:44

JTable 的使用的相关文章

Swing中使用JTable动态获取数据库中的数据并显示

笔者注:本文供新手学习使用,若有一定基础,可以直接看3! 1.创建数据库: /* Navicat MySQL Data Transfer Source Server : aa Source Server Version : 50519 Source Host : localhost:3306 Source Database : test Target Server Type : MYSQL Target Server Version : 50519 File Encoding : 65001 D

JTable只要一双击就进入编辑状态,禁止的方法实现

我用JTable做了一个表格,表格内容只供查看和选择,可每次只要一双击,就进入编辑状态,可是现在我不需要当双击的时候修改表格的内容.这时候需要重载isCellEditable方法. 下面是我的实现的代码: DefaultTableModel model = new DefaultTableModel(date, columnNames) { public boolean isCellEditable(int row, int column) { return false; } }; 这样设置的话

JTable用法-实例

前几篇文章介绍了JTable的基本用法,本文实现一个简单的JTable,算是前文的一个总结,并造福供拷贝党们. Swing-JTable用法-入门 Swing-JTable的渲染器与编辑器使用demo Swing-JTable检测单元格数据变更事件 一.主要功能 1.数据的增删改: 2.渲染器:“Vegetarian”列存放布尔值,以checkBox形式显示:“Sport”列存放字符串,以comboBox形式显示: 3.编辑器:“Name”的编辑器实现一个按钮,按下时弹出对话框: 4.ToolT

Java 根据comboBox选择结果显示JTable

处理这样的问题的主要思路是:     对于JTable,JTree等Swing控件,都有一个对应的Model用来存储数据,JTable对应的有一个DefaultTableModel.     DefaultTableModel model = new DefaultTableModel(datas,columnNames);     JTable jTable = new JTable(model);        DefaultTableModel这个类支持使用数组Object[][]或者是V

JTable 和 AbstractTableModel 几个关键点

1    重写的方法 @Override public int getColumnCount() { // TODO Auto-generated method stub return this.columnNames.size(); } @Override public String getColumnName(int column) { // TODO Auto-generated method stub return (String) this.columnNames.get(column

【代码笔记】Java连连看项目的实现(2)——JTable 、TableModel的使用

博客有时间就写写,所以一篇可能会拆成很多篇,写完后计划再合在一起. 首先肯定是要实现连连看的界面. 先准备连连看要的图片.. “LianLianKan”就是项目名称. 当然,如果小白看我的博客想学到什么,我会说还是放弃,因为文字描述会忽视很多细节,而细节决定bug…… 所以,包括以前的和以后的,博文都会是给自己看看或者内行触类旁通的,也就是——笔记. 我也是今天才明白博文的真正意义吧,所以以后的博文风格会大改……尽量会用自己语言风格来描述以便自己能看懂. 废话少说,现在的第2步: 创建数组,一个

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

JTable在显示所有数据之后,假如需要搜索某个名字,则会获取新的列表数据. 假设datas是JTable的数据,定义为: private Vector<Vector> datas = new Vector<Vector>(); 当你刷新数据的时候,应该这样: if (datas != null) { datas.clear(); Vector<Vector> vectors = getDatasFromList(studentList); datas.addAll(v

JTable 单元格合并 【转】

单元格合并 一.单元格合并.(1)我们可以使用Jtable的三个方法:getCellRect(),columnAtPoint(),and rowAtPoint().第一个方法返回一个单元格的边界(Rectangle类),第二.三个方法分别返回屏幕指定位置的列和行.为了实现单元格合并,我们需要重载(overwrite)这三个方法. (2)另外我们需要找出渲染Jtable的ComponentUI对象,并且修改它以达到我们的目的. (3)创建新的类记录单元格合并情况的数据模型,它要包涵一个方法来取得单

【代码笔记】Java连连看项目的实现(1)——JTable 、TableModel的使用

javax.swing.table.TableModel和javax.swing.JTable JTable .TableModel是Java里面画表格的包. TableModel:为Table提供显示数据.表格维数.表格中显示数据类  型.列标题等Table需要显示的一些属性 JTable:提供表格本身的属性和操作,比如表格的样式.行高.背景.行选中属性等 JTable相当于网页,模特:TableModel相当于服务器,衣服. JTable .TableModel 两者是相互依赖的关系(等于B

Swing Jtable 网格线设置

Swing jtable不绘制网格线或只绘制一条垂直或水平线问题总结 1 不绘制网格线…但占屏幕空间…网格是透明的…. myJTable1.setShowHorizontalLines(false); 水平线不显示 myJTable1.setShowVerticalLines(false); 垂直线不显示 2 不绘制网格线…并且不占屏幕空间…网格是没有的…. setIntercellSpacing():修改单元格间隔,因此也将影响网格线的粗细. setRowMargin (0);设置相邻两行单元