- 表格有两部分组成:行标题(Column Header)和行对象(Column Object),行标题是在此行的最上端,代表此数据的意义,行对象是在行标题下的内容。我们可以利用JTable所提供的getTableHeader()方法去的行标题
- 把JTable放在JScollPane中,这种做法可以讲行标题和行对象完整的显示出来,因为JScollPane会自动取得行标题 如果不想用ScrollPane
- 如果想设置列宽的值,用TableColumn类所提供的setPreferedWidth()方法来设置,并可利用JTable类所提供的setAutoResizeMode()方法来设置某个列宽时其他列宽的变化情况
- 如果我们要显示的数据不固定或是数据类型不全以String类型显示,我们可以用Swing提供的各种Model设计所需要的表格(javax.swing.table)
TableModel
AbstractTableModel
DefaultTableModel
TableModel本身是一个Interface,在这个interface定义了若干方法,又因为TableModel本身是一个interface,所以之间实现建立表格不是很方便,所以Java提供了两个类分别实现这个界面,一个是AbstractTableModel抽象类,一个是DefaultTableModel实体类。
三者的关系如图所示:
implements extends
TableModel——>AbstractTableModel——>DefaultTableModel
1.AbstractTableModel
**继承这个类我们要自己实现getRowCount方法,getColumnCount方法,getValueAt方法
* 几个比较常用的方法:
*JTable的每一行,按照数据类型的不同可以有以下的排列显示方式:
1.Boolean:以Check Box表示
2.Number:以JTable表示,文字向右排列
3.ImageIcon:以图形JLable表示,图形置于JLable的中央
4.Object:以JLable显示对象的String内容,文字向左排列
2. DefaultTableModel
3. TableColumnModel
利用JTable的getColumnModel()方法取得TableColumnModel对象,再利用此对象进行设置
TableColumn类可针对表格中的每一行进行具体的设置。
?如何修改表格内容并能保存修改的值呢
复写AbstractTableModel的setValueAt和isCellEditor方法
SelectionModel
要想使用ListSelectionModel可利用JTable的getSelectionModel方法取得listselectionmode对象,再利用ListSelectionModel界面所定义的setSelectionmodel()来设置选择模式
table.setCellSelectionEnabled(true); selectionmode=table.getSelectionModel(); selectionmode.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
JTable的事件处理(称为TableModelEvent事件)
处理TableModelEvent事件我们必须实现TableModelListener界面
1.如何拦截事件信息?
在AbstractTableModel类中提供注册listener方法:addTableModelListener()
2.在tableChanged方法中实现代码