Module java.desktop

Class AbstractTableModel

java.lang.Object
javax.swing.table.AbstractTableModel
所有已实现的接口:
Serializable, TableModel
直接已知的子类:
DefaultTableModel

public abstract class AbstractTableModel extends Object implements TableModel, Serializable
这个抽象类为TableModel接口中的大多数方法提供了默认实现。它负责管理监听器并提供一些便利来生成TableModelEvents并将其分派给监听器。要创建一个作为AbstractTableModel子类的具体TableModel,您只需要为以下三个方法提供实现:
  public int getRowCount();
  public int getColumnCount();
  public Object getValueAt(int row, int column);
  

警告: 该类的序列化对象将不兼容未来的Swing版本。当前的序列化支持适用于短期存储或在运行相同Swing版本的应用程序之间的RMI。从1.4开始,已将所有JavaBeans的长期存储支持添加到java.beans包中。请参见XMLEncoder

  • Field Details

  • Constructor Details

    • AbstractTableModel

      protected AbstractTableModel()
      子类调用的构造函数。
  • Method Details

    • getColumnName

      public String getColumnName(int column)
      使用电子表格约定返回列的默认名称:A,B,C,... Z,AA,AB等。如果找不到column,则返回空字符串。
      指定者:
      getColumnName 在接口 TableModel
      参数:
      column - 正在查询的列
      返回:
      包含column的默认名称的字符串
    • findColumn

      public int findColumn(String columnName)
      根据名称返回列。如果经常调用此方法,则应重写实现。此方法不在TableModel接口中,并且JTable不使用此方法。
      参数:
      columnName - 包含要定位的列名称的字符串
      返回:
      具有columnName的列,如果未找到则返回-1
    • getColumnClass

      public Class<?> getColumnClass(int columnIndex)
      返回Object.class,无论columnIndex如何。
      指定者:
      getColumnClass 在接口 TableModel
      参数:
      columnIndex - 正在查询的列
      返回:
      Object.class
    • isCellEditable

      public boolean isCellEditable(int rowIndex, int columnIndex)
      返回false。这是所有单元格的默认实现。
      指定者:
      isCellEditable 在接口 TableModel
      参数:
      rowIndex - 正在查询的行
      columnIndex - 正在查询的列
      返回:
      false
      参见:
    • setValueAt

      public void setValueAt(Object aValue, int rowIndex, int columnIndex)
      提供此空实现,以便用户无需实现此方法,如果他们的数据模型不可编辑。
      指定者:
      setValueAt 在接口 TableModel
      参数:
      aValue - 要分配给单元格的值
      rowIndex - 单元格的行
      columnIndex - 单元格的列
      参见:
    • addTableModelListener

      public void addTableModelListener(TableModelListener l)
      向列表中添加一个监听器,每当数据模型发生更改时通知。
      指定者:
      addTableModelListener 在接口 TableModel
      参数:
      l - TableModelListener
    • removeTableModelListener

      public void removeTableModelListener(TableModelListener l)
      从列表中删除一个监听器,每当数据模型发生更改时通知。
      指定者:
      removeTableModelListener 在接口 TableModel
      参数:
      l - TableModelListener
    • getTableModelListeners

      public TableModelListener[] getTableModelListeners()
      返回在此模型上注册的所有表格模型监听器的数组。
      返回:
      所有此模型的TableModelListener或如果当前未注册任何表格模型监听器,则返回空数组
      自1.4起:
      1.4
      参见:
    • fireTableDataChanged

      public void fireTableDataChanged()
      通知所有监听器,表格行中所有单元格的值可能已更改。行数也可能已更改,JTable应该从头开始重新绘制表格。假定表格的结构(如列的顺序)保持不变。
      参见:
    • fireTableStructureChanged

      public void fireTableStructureChanged()
      通知所有监听器,表格的结构已更改。表格中的列数,新列的名称和类型可能与先前状态不同。如果JTable接收到此事件并且其autoCreateColumnsFromModel标志已设置,则它会丢弃任何已有的表格列,并按照它们在模型中出现的顺序重新分配默认列。这与在JTable上调用setModel(TableModel)相同。
      参见:
    • fireTableRowsInserted

      public void fireTableRowsInserted(int firstRow, int lastRow)
      通知所有监听器,范围为[firstRow, lastRow](包括)的行已插入。
      参数:
      firstRow - 第一行
      lastRow - 最后一行
      参见:
    • fireTableRowsUpdated

      public void fireTableRowsUpdated(int firstRow, int lastRow)
      通知所有监听器,范围为[firstRow, lastRow](包括)的行已更新。
      参数:
      firstRow - 第一行
      lastRow - 最后一行
      参见:
    • fireTableRowsDeleted

      public void fireTableRowsDeleted(int firstRow, int lastRow)
      通知所有监听器,范围为[firstRow, lastRow](包括)的行已删除。
      参数:
      firstRow - 第一行
      lastRow - 最后一行
      参见:
    • fireTableCellUpdated

      public void fireTableCellUpdated(int row, int column)
      通知所有监听器,单元格在[row, column]处的值已更新。
      参数:
      row - 已更新的单元格所在的行
      column - 已更新的单元格所在的列
      参见:
    • fireTableChanged

      public void fireTableChanged(TableModelEvent e)
      将给定的通知事件转发给所有已注册为此表格模型的TableModelListeners
      参数:
      e - 要转发的事件
      参见:
    • getListeners

      public <T extends EventListener> T[] getListeners(Class<T> listenerType)
      返回当前在此AbstractTableModel上注册为FooListener的所有对象的数组。使用addFooListener方法注册FooListener

      您可以使用类字面量(例如FooListener.class)指定listenerType参数。例如,您可以使用以下代码查询模型m的表格模型监听器:

      TableModelListener[] tmls = (TableModelListener[])(m.getListeners(TableModelListener.class));
      如果不存在此类监听器,则此方法返回一个空数组。
      类型参数:
      T - 监听器类型
      参数:
      listenerType - 请求的监听器类型
      返回:
      返回在此组件上注册为FooListener的所有对象的数组,如果没有添加此类监听器,则返回一个空数组
      抛出:
      ClassCastException - 如果listenerType未指定实现java.util.EventListener的类或接口
      自:
      1.3
      参见: