当前位置:文档之家› 跟我学Java Swing GUI组件技术及应用实例——JTable表格组件及应用实例

跟我学Java Swing GUI组件技术及应用实例——JTable表格组件及应用实例

1.1跟我学Java Swing GUI组件技术及应用实例——JTable表格组件及应用实例1.1.1表格控件JTable1、JTable表格控件的主要功能JTable顾名思义就是一个将数据以表格显示的组件,它提供以行和列的方式来显示数据,并且可以拖动列。

如下示图为应用JTable表格控件所创建出的数据表格。

JTable的数据选项不仅仅是可以显示字符串,还可以显示Checkbox选择框、下拉列表框或者图片等内容。

如下为Sun 公司的Swing 教程中的TableDialogEditoDemo 应用程序的执行结果示图,在该示例的数据表格中显示Checkbox选择框、下拉列表框和图片等内容。

2、JTable类的API功能说明(1)JTable类的API功能说明如下示图为JDK API文档中对JTable类的API功能说明的相关信息。

如果需要对数据表格中的表头数据列和数据单元格中的数据列进行定制,则需要通过继承封装表头数据列JTableHeader类或者继承封装数据列的TableColumn类。

如下为JTableHeader类和TableColumn类的功能说明。

(2)表头数据列JTableHeader类的功能说明(3)数据列TableColumn类的功能说明TableColumn 类封装表示JTable中数据列的所有属性,如宽度、大小可调整性、最小和最大宽度。

3、JTable表格控件中的数据可以以多种不同的方式被选中(1)选中某一数据行(2)选中连续的多行数据行(3)选中不连续的多行数据行4、JTable类的构造函数定义可以通过JTable(Object[][] rowData, Object[] columnNames)形式的构造方法创建出数据表格组件,该JTable组件将用来显示一个二维数组rowData 中的值(它是一个行数组),其列名称为columnNames所代表的数组。

JTable类的其它形式的构造函数定义如下:5、JTable 组件中的表示表格数据的数据结构(1)TableModel接口的功能定义由于Java Swing采用了MVC的设计,所以JTable不是用来存放数据的,它只是用来作为视图显示,而真正用来存储和维护数据的是TableModel这个接口的实现类。

因此可以通过实现TableModel这个接口,然后在对应的实现类中定义数据表格中的行、列数据单元格。

(2)实现TableModel接口的实现类的代码示例package com.bluedream.swing;import javax.swing.event.TableModelListener;import javax.swing.table.TableModel;public class SomeOneTableModel implements TableModel {@Overridepublic int getRowCount() {return 0;}@Overridepublic int getColumnCount() {return 0;}@Overridepublic String getColumnName(int columnIndex) {return null;}@Overridepublic Class<?> getColumnClass(int columnIndex) {return null;}@Overridepublic boolean isCellEditable(int rowIndex, int columnIndex) { return false;}@Overridepublic Object getValueAt(int rowIndex, int columnIndex) {return null;}@Overridepublic void setValueAt(Object aValue, int rowIndex, int columnIndex) { }@Overridepublic void addTableModelListener(TableModelListener l) {}@Overridepublic void removeTableModelListener(TableModelListener l) {}}(3)通过继承AbstractTableModel的子类定义数据表格中的数据由于直接实现TableModel接口实现重写许多无关的功能方法,因此可以改用继承AbstractTableModel的子类的方式定义数据表格中的数据。

AbstractTableModel类的功能定义如下:在继承AbstractTableModel类的子类中只需要重写如下的三个功能方法:1)public int getRowCount();2)public int getColumnCount();3)public Object getValueAt(int row, int column);如下的代码示例是通过在继承AbstractTableModel类的子类中定义数据表格中的数据:package com.bluedream.swing;import javax.swing.table.AbstractTableModel;public class SomeOneTableModel extends AbstractTableModel {public int getColumnCount(){return 10;}public int getRowCount(){return 10;}public Object getValueAt(int row, int col){return new Integer(row*col);}}(4)应用TableModel接口的实现类或者AbstractTableModel类的子类的对象实例创建出JTable类的对象实例TableModel tableData = new SomeOneTableModel ();JTable someOneDataTable = new JTable(tableData);(5)直接定义数据表格中的行、列数据创建出数据表格在创建JTable类的对象实例时,除了可以应用TableModel接口的实现类或者AbstractTableModel类的子类的对象实例创建出JTable类的对象实例以外,也可以采用直接定义数据表格中的行、列数据的方式创建出数据表格,如下为该方法的代码示例:String tableHead[]={"第一列","第二列","第三列"};Object [][]tableData={{"第一行第一列","第一行第二列","第一行第三列"},{"第二行第一列","第二行第二列","第二行第三列"},{"第三行第一列","第三行第二列","第三行第三列"}};JTable someOneDataTable =new JTable(tableData, tableHead);6、创建出JTable对象的编程方法可以采用表格中的表头数组和数据数组创建出表格,也可以利用实现TableModel接口的类对象来实现。

如下为表格控件JTable的编程步骤:(1)创建出JTable对象可以采用表格中的表头数组和数据数组创建出表格,或者利用实现TableModel接口的类对象。

(2)再创建出一个JScrollPane对象并指示其ScrollBar的使用策略;(3)将表格控件加入JScrollPane中;(4)最后将JScrollPane对象加人到顶级容器的ContentPane中。

7、应用TableModel接口的实现类封装数据表格数据的方法创建数据表格的示例代码(1)示例程序代码package com.bluedream.swing;import javax.swing.JFrame;import javax.swing.JScrollPane;import javax.swing.JTable;import javax.swing.table.AbstractTableModel;import javax.swing.table.TableModel;public class JTableTest extends JFrame{public JTableTest() {super("窗口的标题条文字");/*** 应用TableModel接口的实现类封装数据表格数据的方法创建数据表格*/TableModel dataModel = new AbstractTableModel(){public int getColumnCount(){return 10;}public int getRowCount(){return 10;}public Object getValueAt(int row, int col){return new Integer(row*col);}};JTable table = new JTable(dataModel);JScrollPane scrollPane=new JScrollPane(table,JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);this.setContentPane(scrollPane);setSize(500,500);setVisible(true);setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);}public static void main(String []args){JTableTest frame=new JTableTest();}}(2)示例程序代码执行的效果8、应用封装数据表格数据的二维数组的方法创建数据表格的示例代码(1)示例程序的代码package com.bluedream.swing;import javax.swing.JFrame;import javax.swing.JScrollPane;import javax.swing.JTable;public class JTableTest extends JFrame{String tableHead[]={"第一列","第二列","第三列"};Object [][]tableData={{"第一行第一列","第一行第二列","第一行第三列"},{"第二行第一列","第二行第二列","第二行第三列"},{"第三行第一列","第三行第二列","第三行第三列"}};public JTableTest() {super("窗口的标题条文字");JTable table=new JTable(tableData,tableHead);JScrollPane scrollPane=new JScrollPane(table,JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);this.setContentPane(scrollPane);setSize(500,500);setVisible(true);setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);}public static void main(String []args){JTableTest frame=new JTableTest();}}(2)示例程序代码的执行结果。

相关主题