ImageObserverMenuContainer,Serializable, EventListener, Accessible, CellEditorListener, ListSelectionListener,RowSorterListener, TableColumnModelListener, TableModelListener, Scrollable
公开类JTable
继承(extends) JComponent
实现的具体接口(implements)TableModelListener,Scrollable,TableColumnModelListener,ListSelectionListener,CellEditionListener,RowSorterListener
JTable用于显示并编辑二元表。JTable有许多功能让他能够按照用户的要求渲染编辑,但是提供的默认的表是非常容易建立的。例如,建一个10行10列的表格。
TableModeldataModel = new AbstractTableModel() {
public int getColumnCount() { return 10; }
public int getRowCount() { return 10;}
public Object getValueAt(int row, int col) { return newInteger(row*col); }
};
JTable table = new JTable(dataModel);
JScrollPane scrollpane = new JScrollPane(table);
JTable的典型用法是将它加载到一个滑动窗口中。默认的JTable会自动调整他的宽度于是滑动窗口的横向滑动就没有用了。为了使滑动窗口的水平滑动起作用,可以调用 setAutoResizeMode(int)的方法,同时参数设置为AUTO_RESIZE_OFF。值得一提的是如果想要建立一个标准的表格,也就是说想要将表格的头部也建立在其中,可以使用 getTableHeader() 方法。
为了使表格排序以及填充表格信息,可以使用RowtSorter。下面两种排序方法任选其一。
1. 直接设置RowSorter.例如,table.setRowSorter(new TableRowSorter(model))
2. 将autoCreateRowSorter 属性值设为true,JTable就可以排序了,例如:setAutoCreateRowSorter(true)
当决定使用JTable时,首先考虑的就是放到表格的数据的结构。DefaultTableModel 的实现采用的是Vector对象来存放属性值。同样,使用从一个应用程序中复制数据信息到 DefaultTableModel的方法,同样起着通过TableModel接口将数据信息打包作用,因此数据可以顺利的放到表格中。这种应用是非常有效的,因为这些模型非常方面获取,而且这种表示方法非常适合数据。一条选择模型的黄金法则:当基类创建了子类就用AbstractTableModel;当子类不被允许则使用DefaultTableModel。
JTable使用int类型的数据来唯一标识模型中展示行列数。JTable使用扁平的单元格以及getValueAt(int, int)方法来获取在创建表格时的表格模型中的数据。需要注意的是,表格行列的索引是取决于表格本身,而不是表格模型。
在默认情况下,统一表格使用不同模型是表格中数据位置不同,这一点并不会影响表格模型,因为当表格中列数发生改变时,JTable内部会自动维护列数,这一操作是发生在表格模型使用之前,所以并不会对表格本身造成影响。
因此,在使用表格模型时不用在意表格数据顺序,因为不同的表格模型会自动调序,所以不管是什么操作都是没用的。