好文档就是一把金锄头!
欢迎来到金锄头文库![会员中心]
电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

JTable的使用简单的例子.docx

10页
  • 卖家[上传人]:s9****2
  • 文档编号:411423834
  • 上传时间:2023-12-08
  • 文档格式:DOCX
  • 文档大小:189.70KB
  • / 10 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 目标:1. 掌握表格组件的基本用法;2. 理解数据结构与界面分离的设计原理1. JTable 与 TableModel 21. TableModel 与 JTable 的关系: 22. TableModel 实践: 33. 使用JTable+TableModel展示java中的数据对象: 52. JTable展示方式的美化: 81. 设置表格的宽度和高度: 82 .要显示表头: 83. 新加列,将列设为下拉框: 94. 表格排序: 93. JTable事件响应和项目设想 91・ JTable 与 TableModel1. TableModel 与 JTable 的关系:前面,我们己学会在界面上加入一个简单的JTable对象:JTable t able二new JTable(3,5);这段代码即可创建一个三行五列的表格用以显示在界面 上;在具体的应用中,我们肯定是要让JTable显示我们自己定义的数据,比如将上例中的 Userinfo对象或UserBlog对象显示到表格中,那就必须定制 JTable对象所要使用的JTable对象简单的说,JTable只是TableModel 对象javax.swing. table.TableModel 对象,在开始前,我们先理解 javax.swing.table.TableModel 和JTable之间的关系:模特与衣服之间的关系:个界面,主要负责显示功能,但JTable对象具体显示多少行多少列,甚示每行每列中显示什么类型的数据,JTable中的单元格是否可编辑,编辑之后怎么办… 关于数据提供和数据操作的实现,都是由这个JTable对象的TableModel对象所负责的;反向 而言,当JTable对象界面的数据被改动时,JTable会自动调用自己模型中的方法将改动反映 到模型中。

      说了这么多,我们来看TableModel到底是什么东东一一它是一个接口定义,源码说明如下: //通过调用JTable对象的setModel方法,传入实现了 TableModel接口类的对象public interface TableModel{public int getRowCount();//决定表格上显示多少行public int getColumnCount();//表格上显示多少列//得到某一列的列名,columnindex:列的序号,从0开始public String getColumnName(int columnindex);//得到某一列的数据类型,columnindex:列的序号,从0开始 public Class

      public void setValueAt(Object aValue, int rowindex, int columnindex);//模型对象可调用这个方法为自己加入一个监听器 public void addTableModelListener(TableModelListener l);//移除模型对象中的监听器public void removeTableModelListener(TableModelListener l);} 根据以上接口定义,我们只需要编写一个实现了 TableMode l的类,通过如下样例代码:javax.swing.JTable t able=new javax.swing.JTable();table.setModel(new 实现了 TableModel 接口的类);就可以在 JTable 对象在显示时,就会自动调用传入的 Model 中的方法用以填充自己的单元 格的数据2. TableModel 实践:首先,我们编写一个TableModel的实现类如下:import javax.sw in g.eve nt.TableModelListe ner;/**自定义的tableModel实现类*/public class MyTableModelVI implements javax.swing.table.TableModel{〃多少行:public int getRowCou nt(){return 10;}〃多少列public int getColu mnCoun t(){return 5;}〃取得列名public Stri ng getColu mnN ame(int colu mnln dex){ return "第"+columnlndex+"列名";}〃每一列的数据类型:我们这里显示的都是Stri ng型public Classv?> getColu mn Class(int colu mnln dex){ return Stri ng.class;}〃指定的单元格是否可从界面上编辑public boolean isCellEditable(int rowindex, int columnlndex){ if(colum nin dex==0){return false;}return true;}〃取得指定单元格的值public Object getValueAt(int row In dex, int colu mnin dex){ return rowl ndex+"--"+colu mnin dex;}〃从表格界面上改变了某个单元格的值后会调用这个方法public void setValueAt(Object aValue, int row In dex, int colu mnin dex){Stri ng s="Cha nge at: "+rowi ndex+"--- "+colu mnin dex+" n ewValue: "+aValue; System.out.pri ntln (s);}〃这两个接口方法暂无用public void addTableModelListener(TableModelListener l){}public void removeTableModelListener(TableModelListener l){}}使用这个 TableModel 对象的 JTable 将显示 10 行 5 列,每个单元格将返回 getValueAt 方法返 回的字符串,当我们在使用它的表格界面上编辑表格数据(第一列不可编辑‘Model中限定了), 就会调用set Value方法将编辑过后的值打印出来。

      用以显示这个 Model 的 Jtable 和界面代码如下://TableMode I应用测试public class TestJTable {〃程序入口public static void main( Str in g[] args) {javax.swi ng.JFrame jf=new javax.swi ng.JFrame("表格测试");jf.setSize(300,400);java.awt.FlowLayout fl=new java.awt.FlowLayout();jf.setLayout(fl);//1.创建一个默认的简单表格对像:javax.swi ng.JTable table=new javax.swi ng.JTable();//2.创建我们自定义的TableModel对象MyTableModelV1 tm=new MyTableModelV1();//3.将其设置为Table的Model table.setModel(tm);jf.add(table);jf.setDefaultCloseOperatio n(3);jf.setVisible(true);}}要让某个JTable对象按照我们自己实现的TableModel显示数据,只需要创建我们实现的 TableModel 的对象:MyTableModelV1 tm=new MyTableModelV1();然后调用 JTable 对象的 setModel 方法,传入自定义的 TableModel 对象即可,我们可以看到 程序界面运行时如下:3. 使用JTable+TableModel展示java中的数据对象:具体请看示例,将多个Userinfo对象列表的数据显示到JTable中,首先,我们需要 编写自己的TableMode 1类,即实现了 javax.swing. table.JtableMode 1接口的类,这个实现类 使用装有 Userinfo的List 对象,负责将列表中的用户对象信息提供给 Jtable对象显示: import java.util.List;import javax.swing.event.TableModelListener;import javax.swing.table.TableModel;/***用以在J Table中显示UserInfo对象的TableModel实现类* @author:蓝杰*/ public class UserInfoTableModel implements TableModel{private List userList; //要显示的UserInfo对象列表 //创建模型对象时,必须传入要显示的UserInfo对象列表 public UserInfoTableModel(List userList){this.userList=userList;}//得到行数:列表中有几个UserInfo对象,就显示几行public int getRowCount(){return userList.size();}//得到列数,UserInfo对象的每个属性是一列,id,name,age,共3列 public int getColumnCount(){return 3;}//指定某列的类型:暂时都是字符串类型,public Class

      点击阅读更多内容
      关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
      手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
      ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.