原文地址:http://hi.baidu.com/jiajiajava/item/1a18431b322fc011e2f986ef

  1. JTableSwing编程中很常用的控件,这里总结了一些常用方法以备查阅.
  2. 一.创建表格控件的各种方式:
  3. 1) 调用无参构造函数.
  4. JTable table = new JTable();
  5. 2) 以表头和表数据创建表格.
  6. Object[][] cellData = {{"row1-col1", "row1-col2"},{"row2-col1", "row2-col2"}};
  7. String[] columnNames = {"col1", "col2"};
  8.  
  9. JTable table = new JTable(cellData, columnNames);
  10. 3) 以表头和表数据创建表格,并且让表单元格不可改.
  11. String[] headers = { "表头一", "表头二", "表头三" };
  12. Object[][] cellData = null;
  13. DefaultTableModel model = new DefaultTableModel(cellData, headers) {
  14. public boolean isCellEditable(int row, int column) {
  15. return false;
  16. }
  17. };
  18. table = new JTable(model);
  19. 二.对表格列的控制
  20. 1) 设置列不可随容器组件大小变化自动调整宽度.
  21. table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
  22. 2) 限制某列的宽度.
  23. TableColumn firsetColumn = table.getColumnModel().getColumn(0);
  24. firsetColumn.setPreferredWidth(30);
  25. firsetColumn.setMaxWidth(30);
  26. firsetColumn.setMinWidth(30);
  27. 3) 设置当前列数.
  28. DefaultTableModel tableModel = (DefaultTableModel) table.getModel();
  29. int count=5;
  30. tableModel.setColumnCount(count);
  31. 4) 取得表格列数
  32. int cols = table.getColumnCount();
  33. 5) 添加列
  34. DefaultTableModel tableModel = (DefaultTableModel) table.getModel();
  35. tableModel.addColumn("新列名");
  36. 6) 删除列
  37. table.removeColumn(table.getColumnModel().getColumn(columnIndex));// columnIndex是要删除的列序号
  38. 三.对表格行的控制
  39. 1) 设置行高
  40. table.setRowHeight(20);
  41. 2) 设置当前航数
  42. DefaultTableModel tableModel = (DefaultTableModel) table.getModel();
  43. int n=5;
  44. tableModel.setRowCount(n);
  45. 3) 取得表格行数
  46. int rows = table.getRowCount();
  47. 4) 添加表格行
  48. DefaultTableModel tableModel = (DefaultTableModel) table.getModel();
  49. tableModel.addRow(new Object[]{"sitinspring", "35", "Boss"});
  50. 5) 删除表格行
  51. DefaultTableModel tableModel = (DefaultTableModel) table.getModel();
  52. model.removeRow(rowIndex);// rowIndex是要删除的行序号
  53. 四.存取表格单元格的数据
  54. 1) 取单元格数据
  55. DefaultTableModel tableModel = (DefaultTableModel) table.getModel();
  56. String cellValue=(String) tableModel.getValueAt(row, column);// 取单元格数据,row是行号,column是列号
  57. 2) 填充数据到表格.
  58. 注:数据是Member类型的链表,Member类如下:
  59. public class Member{
  60. // 名称
  61. private String name;
  62.  
  63. // 年龄
  64. private String age;
  65.  
  66. // 职务
  67. private String title;
  68. }
  69. 填充数据的代码:
  70. public void fillTable(List<Member> members){
  71. DefaultTableModel tableModel = (DefaultTableModel) table
  72. .getModel();
  73. tableModel.setRowCount(0);// 清除原有行
  74.  
  75. // 填充数据
  76. for(Member member:members){
  77. String[] arr=new String[3];
  78. arr[0]=member.getName();
  79. arr[1]=member.getAge();
  80. arr[2]=member.getTitle();
  81.  
  82. // 添加数据到表格
  83. tableModel.addRow(arr);
  84. }
  85.  
  86. // 更新表格
  87. table.invalidate();
  88. }
  89. 2) 取得表格中的数据
  90. public List<Member> getShowMembers(){
  91. List<Member> members=new ArrayList<Member>();
  92.  
  93. DefaultTableModel tableModel = (DefaultTableModel) table
  94. .getModel();
  95.  
  96. int rowCount=tableModel.getRowCount();
  97.  
  98. for(int i=0;i<rowCount;i++){
  99. Member member=new Member();
  100.  
  101. member.setName((String)tableModel.getValueAt(i, 0));// 取得第i行第一列的数据
  102. member.setAge((String)tableModel.getValueAt(i, 1));// 取得第i行第二列的数据
  103. member.setTitle((String)tableModel.getValueAt(i, 2));// 取得第i行第三列的数据
  104.  
  105. members.add(member);
  106. }
  107.  
  108. return members;
  109. }
  110. 五.取得用户所选的行
  111. 1) 取得用户所选的单行
  112. int selectRows=table.getSelectedRows().length;// 取得用户所选行的行数
  113. DefaultTableModel tableModel = (DefaultTableModel) table.getModel();
  114. if(selectRows==1){
  115. int selectedRowIndex = table.getSelectedRow(); // 取得用户所选单行
  116.  
  117. .// 进行相关处理
  118. }
  119. 2) 取得用户所选的多行
  120. int selectRows=table.getSelectedRows().length;// 取得用户所选行的行数
  121. DefaultTableModel tableModel = (DefaultTableModel) table.getModel();
  122. if(selectRows>1)
  123. int[] selRowIndexs=table.getSelectedRows();// 用户所选行的序列
  124.  
  125. for(int i=0;i<selRowIndexs.length;i++){
  126. // 用tableModel.getValueAt(row, column)取单元格数据
  127. String cellValue=(String) tableModel.getValueAt(i, 1);
  128. }
  129. }
  130. 六.添加表格的事件处理
  131. view.getTable().addMouseListener(new MouseListener() {
  132. public void mousePressed(MouseEvent e) {
  133. // 鼠标按下时的处理
  134. }
  135. public void mouseReleased(MouseEvent e) {
  136. // 鼠标松开时的处理
  137. }
  138. public void mouseEntered(MouseEvent e) {
  139. // 鼠标进入表格时的处理
  140. }
  141. public void mouseExited(MouseEvent e) {
  142. // 鼠标退出表格时的处理
  143. }
  144. public void mouseClicked(MouseEvent e) {
  145. // 鼠标点击时的处理
  146. }
  147. });

转载 - JTable 使用细讲的更多相关文章

  1. JProfiler远程监控Linux上Tomcat的安装过程细讲(步骤非常详细!!!)

    JProfiler远程监控Linux上Tomcat的安装过程细讲(步骤非常详细!!!) 1.文件准备: 服务器:CentOS Linux release 7.3.1611 (Core)     Apa ...

  2. JavaScript基础细讲

    JavaScript基础细讲   JavaScript语言的前身叫作Livescript.自从Sun公司推出著名的Java语言之后,Netscape公司引进了Sun公司有关Java的程序概念,将自己原 ...

  3. Celery定时任务细讲

    Celery定时任务细讲 一.目录结构 任务所在目录 ├── celery_task # celery包 如果celery_task只是建了普通文件夹__init__可以没有,如果是包一定要有 │ ├ ...

  4. 细讲前端设置cookie, 储存用户登录信息

    细讲前端设置cookie 引言 正文 一.设置cookie 二.查看cookie 三.删除cookie 四.封装cookie操作 结束语 引言 我们都知道如果想做一个用户登录并使浏览器保存其登录信息, ...

  5. 转载:JProfiler远程监控LINUX上的Tomcat过程细讲

    来源于xuwanbest的博客   所谓"工欲善其事,必先利其器",好的工具确能起到事半工倍的作用.我用到的最多的就两个JConsole 和JProfiler .JConsole监 ...

  6. 学到了林海峰,武沛齐讲的Day19 迭代细讲

    在家加1个月学了8day的课  出差6天看了8day的课..说明再忙也是可以挤挤多学习的. 广州出差最后两天没学习.一天做车,一天做公司的事...4天就过去了. 老师讲的包子和鸡蛋需求不好...讲的有 ...

  7. 细讲encodeURI和encodeURIComponent以及escape的区别与应用

    首先,我们都知道这三个东西都是用来编码的 先来说encodeURI()和encodeURIComponent() 这两个是在转换url时候用来编码解码用的. 有编码就会有解码, 解码就是decodeU ...

  8. Java文件上传细讲

    什么是文件上传? 文件上传就是把用户的信息保存起来. 为什么需要文件上传? 在用户注册的时候,可能需要用户提交照片.那么这张照片就应该要进行保存. 上传组件(工具) 为什么我们要使用上传工具? 为啥我 ...

  9. 关系网络理论︱细讲中介中心性(Betweeness Centrality)

    关系网络在我认为都是一种很简单暴力地能挖掘人群特征关系的一种方式,特别今天去听了一场关于AI与金融领域的结合,里面提到了拓扑分析其实就是关系网络的解释.我在之前的文章( R语言︱SNA-社会关系网络- ...

随机推荐

  1. The Elder HDU - 5956

    /* 树上斜率优化 一开始想的是构造出一个序列 转化成一般的dp但是可能被卡 扫把状的树的话可能变成n*n 其实可以直接在树上维护这个单调队列 dfs虽然搞得是一棵树,但是每次都是dfs到的都是一个序 ...

  2. P4135 作诗——分块

    题目:https://www.luogu.org/problemnew/show/P4135 分块大法: 块之间记录答案,每一块记录次数前缀和: 注意每次把桶中需要用到位置赋值就好了: 为什么加了特判 ...

  3. c++ 写进文件并读出

    #include <iostream>#include <fstream>#include <vector>#include <string> int ...

  4. Coursera Algorithms week1 算法分析 练习测验: Egg drop 扔鸡蛋问题

    题目原文: Suppose that you have an n-story building (with floors 1 through n) and plenty of eggs. An egg ...

  5. SpringAOP使用注解实现5种通知类型

    spring aop的5种通知类型都有 Before前置通知 AfterReturning后置通知 Around环绕通知 AfterThrowing异常通知 After最终通知 首先创建接口和实现类 ...

  6. ASP之ViewState和IsPostBack

    没怎么写过ASPX页面,今天在做增删改的界面的时候,修改出了问题. 根据传过来的ObjectID加载页面数据,赋值给TextBox控件后,修改控件的值回写数据库,发现值没有变化. 简单的例子如下: 然 ...

  7. (转)用JS实现表格中隔行显示不同颜色

    用JS实现表格中隔行显示不同颜色 第一种: <style> tr{bgColor:expression(     this.bgColor=((this.rowIndex)%2==0 )? ...

  8. HttpWebRequest 知识点

    string Url = System.Configuration.ConfigurationManager.AppSettings["CallPaperInvoiceURL"]; ...

  9. 闰年or平年判断

    <script type="text/javascript">var year = prompt("请输入一个年份");if(year!=null) ...

  10. dotnetnuke 中使用ado.net entityframework 如果在程序中动态调用系统的连接字符串信息

    1,打开如下图的Model1.Context.cs文件 2,找到 Base:(ConnString.conn)是我改的.默认生成的是"name=实体连接字符串" Connstrin ...