jtable的入门详细介绍

上传人:第*** 文档编号:31077766 上传时间:2018-02-04 格式:DOCX 页数:9 大小:49.05KB
返回 下载 相关 举报
jtable的入门详细介绍_第1页
第1页 / 共9页
jtable的入门详细介绍_第2页
第2页 / 共9页
jtable的入门详细介绍_第3页
第3页 / 共9页
jtable的入门详细介绍_第4页
第4页 / 共9页
jtable的入门详细介绍_第5页
第5页 / 共9页
点击查看更多>>
资源描述

《jtable的入门详细介绍》由会员分享,可在线阅读,更多相关《jtable的入门详细介绍(9页珍藏版)》请在金锄头文库上搜索。

1、JTable 的入门详细介绍 8-1:使用 JTable 组件:类层次结构图:java.lang.Object-java.awt.Component-java.awt.Container-javax.swing.JComponent-javax.swing.JTabel在使用 JTable 以前,我们先看一下它的构造函数有哪些, 以及应该如何使用:JTabel 构造函数:JTable():建立一个新的 JTables,并使用系统默认的 Model.JTable(int numRows,int numColumns):建立一个具有 numRows 行,numColumns 列的空表格,使用的是

2、DefaultTableModel.JTable(Object rowData,Object columnNames):建立一个显示二维数组数据的表格,且可以显示列的名称。JTable(TableModel dm):建立一个 JTable,有默认的字段模式以及选择模式,并设置数据模式。JTable(TableModel dm,TableColumnModel cm):建立一个 JTable,设置数据模式与字段模式,并有默认的选择模式。JTable(TableModel dm,TableColumnModel cm,ListSelectionModel sm):建立一个 JTable,设置数据模

3、式、字段模式、与选择模式。JTable(Vector rowData,Vector columnNames):建立一个以 Vector 为输入来源的数据表格,可显示行的名称。我们先以 Array 构造方式,说明如何利用 JTable 来建立一个简单的表格 :import javax.swing.*;import java.awt.*;import java.awt.event.*;import java.util.*;public class SimpleTablepublic SimpleTable()JFrame f=new JFrame();Object playerInfo=阿呆, n

4、ew Integer(66),new Integer(32),new Integer(98),new Boolean(false),阿呆, new Integer(82),new Integer(69),new Integer(128),new Boolean(true),;String Names=姓名, 语文,数学,总分,及格;JTable table=new JTable(playerInfo,Names);table.setPreferredScrollableViewportSize(new Dimension(550,30);JScrollPane scrollPane=new J

5、ScrollPane(table);f.getContentPane().add(scrollPane,BorderLayout.CENTER);f.setTitle(Simple Table); f.pack();f.show();f.addWindowListener(new WindowAdapter() public void windowClosing(WindowEvent e) System.exit(0););public static void main(String args)SimpleTable b=new SimpleTable();表格由两部份组成:分别是行标题(C

6、olumn Header)与行对象(Column Object).利用 JTable 所提供的 getTableHeader()方法取得行标题。在这个例子中,我们将 JTable 放在 JScrollPane 中,这种做法可以将 Column Header 与 Colmn Object 完整的显示出来 ,因为 JScrollPane 会自动取得 Column Header.但如果文坛读者将上面第 15 行去掉并修改第 16 行:f.getContentPane().add(table,BorderLayout.CENTER); 则运行结果你会发现 Column Header不见了。如果你不想用

7、 JScrollPane,要解决这个问题,你必须将程序修改如下:JTable table=new JTable(p,n);table.setPreferredScrollableViewportSize(new Dimension(550,30);f.getContentPane().add(table.getTableHeader(),BorderLayout.NORTH);f.getContentPane().add(table,BorderLayout.CENTER);运行结果就会跟之前一样有行标题了.上面的运行结果就会跟发现,每个字段的宽度都是一样的,除非你自行拉曳某个列宽。若我们想一

8、开始就设置列宽的值,可以 利用 TableColumn 类所提供的 setPreferredWidth()方法来设置,并可利用 JTable 类所提供的 setAutoResizeMode()方法来设置调整某个列宽时其他列宽的变化情况,我们看下面这个例子:import javax.swing.*;import javax.swing.table.*;import java.awt.*;import java.awt.event.*;import java.util.*;public class SimpleTable2public SimpleTable2()JFrame f=new JFra

9、me();Object p=阿呆,new Integer(66), new Integer(32),new Integer(98),new Boolean(false),new Boolean(false),阿呆,new Integer(82), new Integer(69),new Integer(128),new Boolean(true),new Boolean(false),; String n=姓名,语文,数学,总分,及格,作弊;TableColumn column=null;JTable table=new JTable(p,n);table.setPreferredScroll

10、ableViewportSize(new Dimension(550,30);table.setAutoResizeMode(JTable.AUTO_RESIZE_SUBSEQUENT_COLUMNS);/利用 JTable 中的 getColumnModel()方法取得 TableColumnModel 对象; 再利用 TableColumnModel 界面 所定义的 getColumn()方法取 TableColumn 对象,利用此对象的 setPreferredWidth()方法就可以控制字段的宽度.for (int i=0;iAbstractTableModel-extends-Def

11、aultTableModel8-3:AbstractTableModel:java 提供的 AbstractTableModel 是一个抽象类,这个类帮我们实现大部份的 TableModel 方法,除了 getRowCount(),getColumnCount(),getValueAt()这三个方法外 .因此我们的主要任务就是去实现这三个方法.利用 这个抽象类就可以设计出不同格式的表格. 我们来看看它所提供的方法.AbstractTableModel 方法:void addTableModelListener(TableModelListener l):使表格具有处理 TableModelEv

12、ent 的能力.当表格的 Table Model 有所变化时,会发出 TableModelEvent 事件信息.int findColumn(String columnName):寻找在行名称中是否含有 columnName 这个项目. 若有,则返回其所在行的位置; 反之则返回-1 表示未找到.void fireTableCellUpdated(int row, int column):通知所有的 Listener 在这个表格中的(row,column)字段的内容已经改变了.void fireTableChanged(TableModelEvent e):将所收的事件通知传送给所有在这个 ta

13、ble model 中注册过的 TableModelListeners.void fireTableDataChanged():通知所有的 listener 在这个表格中列的内容已经改变了. 列的数目可能已经改变了,因此 JTable 可能需要重新显示此表格的结构.void fireTableRowsDeleted(int firstRow, int lastRow):通知所有的 listener 在这个表格中第 firstrow 行至 lastrow 列已经被删除了.void fireTableRowsUpdated(int firstRow, int lastRow):通知所有的 list

14、ener 在这个表格中第 firstrow 行至 lastrow 列已经被修改了.void fireTableRowsInserted(int firstRow, int lastRow):通知所有的 listener 在这个表格中第 firstrow 行至 lastrow 列已经被加入了.void fireTableStructureChanged():通知所有的 listener 在这个表格的结构已经改变了. 行的数目,名称以及数据类型都可能已经改变了.Class getColumnClass(int columnIndex):返回字段数据类型的类名称.String getColumnNa

15、me(int column):若没有设置列标题则返回默认值 ,依次为 A,B,C,.Z,AA,AB,.;若无此 column,则返回一个空的 String. Public EventListener getListeners(Class listenerType):返回所有在这个 table model 所建立的 listener 中符合 listenerType 的 listener,并以数组形式返回.boolean isCellEditable(int rowIndex, int columnIndex):返回所有在这个 table model 所建立的 listener 中符合 list

16、enerType 形式的 listener,并以数组形式返回.void removeTableModelListener(TableModelListener l):从 TableModelListener 中移除一个 listener.void setValueAt(Object aValue, int rowIndex, int columnIndex):设置某个 cell(rowIndex,columnIndex)的值.若你仔细比较 TableModel 所定义的方法与上述 AbstractTableModel 所提供的方法, 你可以发 现,AbstractTableModel 抽象类并没有实现 getRowCount(),getColumnCount(),getValueAt()这 三个方法,这也就是为什么我们要去实现这三个方法的原因.下面我

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 解决方案

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号