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. iOS 图片拉伸

    UIImage *img = [UIImage imageNamed:@"CGUnwrapRed_2"]; img = [img stretchableImageWithLeftC ...

  2. Linux下Nginx、PHP、MySQL、Redis开机自启动设置

    一.Nginx开机启动设置 1.在/etc/init.d/目录下创建脚本 vi /etc/init.d/nginx 2.更改脚本权限 chmod 775 /etc/init.d/nginx 3.编写脚 ...

  3. 冯如杯day1

    day1 今天尝试配置了seetaface工程 主要按照这个网址中提示的步骤配置seetaface 第一步安装并配置OpenCV 按照这个网址进行配置,结果遇到了这样的错误 无法启动此程序,因为计算机 ...

  4. (简单) HDU 5154 Harry and Magical Computer,图论。

    Description In reward of being yearly outstanding magic student, Harry gets a magical computer. When ...

  5. MYSQL 主从服务器配置工作原理

    一.        主从配置的原理: Mysql的 Replication 是一个异步的复制过程,从一个 Mysql instace(我们称之为 Master)复制到另一个 Mysql instanc ...

  6. 内层div的margin-top影响外层div——引出外边距合并Collapsing margins

    内层div的margin-top影响外层div——引出外边距合并Collapsing margins 作者:zccst 今天才算是了解边距合并.正如一位前辈所言,每一个CSS的坑,都让你学到不少知识. ...

  7. Crazyflie笔记五: CRTP 实时通信协议(一)(转)

    源:Crazyflie笔记五: CRTP 实时通信协议(一) 这里详细介绍了 Crazyflie 的 CRTP实时通信协议的相关内容,由于内容很长,分几篇博文来讲述.这里是第一节内容.欢迎交流:301 ...

  8. linux学习小记:如何查看linux服务器的cpu数量,内核数,和cpu线程数

    查看物理cpu个数 grep 'physical id' /proc/cpuinfo | sort -u | wc -l 查看每个cpu核心数量 grep 'core id' /proc/cpuinf ...

  9. IOS 创建和设置pch

    1.添加pch文件 2.修改工程配置文件 Building Settings->All->Apple LLVM 6.0 -Language -> Prefix Header

  10. php在客户端禁用cookie时让session不失效的解决方法

    cookie固然好,不过有些客户端浏览器会禁用cookie,这就会导致你所依赖cookies的程序会失效或出错,那么若真出现用户关闭cookies的情况,PHP应该如何再次使用session?方法还是 ...