Module java.desktop

Class DefaultTableColumnModel

java.lang.Object
javax.swing.table.DefaultTableColumnModel
所有已实现的接口:
PropertyChangeListener, Serializable, EventListener, ListSelectionListener, TableColumnModel

public class DefaultTableColumnModel extends Object implements TableColumnModel, PropertyChangeListener, ListSelectionListener, Serializable
JTable的标准列处理程序。

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

参见:
  • Field Details

    • tableColumns

      protected Vector<TableColumn> tableColumns
      此模型中的TableColumn对象数组
    • selectionModel

      protected ListSelectionModel selectionModel
      用于跟踪列选择的模型
    • columnMargin

      protected int columnMargin
      每列之间的宽度边距
    • listenerList

      protected EventListenerList listenerList
      TableColumnModelListener列表
    • changeEvent

      protected transient ChangeEvent changeEvent
      更改事件(仅需要一个)
    • columnSelectionAllowed

      protected boolean columnSelectionAllowed
      此列模型中允许列选择
    • totalColumnWidth

      protected int totalColumnWidth
      所有列的组合宽度的本地缓存
  • Constructor Details

    • DefaultTableColumnModel

      public DefaultTableColumnModel()
      创建默认的表列模型。
  • Method Details

    • addColumn

      public void addColumn(TableColumn aColumn)
      aColumn附加到tableColumns数组的末尾。此方法还向其侦听器发布columnAdded事件。
      指定者:
      addColumn 在接口 TableColumnModel
      参数:
      aColumn - 要添加的TableColumn
      抛出:
      IllegalArgumentException - 如果aColumnnull
      参见:
    • removeColumn

      public void removeColumn(TableColumn column)
      tableColumns数组中删除column。如果column不在表的列列表中,则此方法将不执行任何操作。调用tile来调整标题和表视图的大小。此方法还向其侦听器发布columnRemoved事件。
      指定者:
      removeColumn 在接口 TableColumnModel
      参数:
      column - 要移除的TableColumn
      参见:
    • moveColumn

      public void moveColumn(int columnIndex, int newIndex)
      columnIndex处的列和标题移动到newIndex。现在在newIndex处找到columnIndex处的旧列。原来在newIndex处的列向左或向右移动以腾出空间。如果columnIndex等于newIndex,则不会移动任何列。此方法还向其侦听器发布columnMoved事件。
      指定者:
      moveColumn 在接口 TableColumnModel
      参数:
      columnIndex - 要移动的列的索引
      newIndex - 移动列的新索引
      抛出:
      IllegalArgumentException - 如果columnnewIndex不在有效范围内
    • setColumnMargin

      public void setColumnMargin(int newMargin)
      将列边距设置为newMargin。此方法还向其侦听器发布columnMarginChanged事件。
      指定者:
      setColumnMargin 在接口 TableColumnModel
      参数:
      newMargin - 新的边距宽度,以像素为单位
      参见:
    • getColumnCount

      public int getColumnCount()
      返回tableColumns数组中的列数。
      指定者:
      getColumnCount 在接口 TableColumnModel
      返回:
      tableColumns数组中的列数
      参见:
    • getColumns

      public Enumeration<TableColumn> getColumns()
      返回模型中所有列的Enumeration
      指定者:
      getColumns 在接口 TableColumnModel
      返回:
      模型中所有列的Enumeration
    • getColumnIndex

      public int getColumnIndex(Object identifier)
      返回tableColumns数组中第一个列的索引,其标识符等于identifier,使用equals进行比较。
      指定者:
      getColumnIndex 在接口 TableColumnModel
      参数:
      identifier - 标识对象
      返回:
      第一个在tableColumns数组中具有与identifier相等标识的列的索引
      抛出:
      IllegalArgumentException - 如果identifiernull,或者没有TableColumn具有此identifier
      参见:
    • getColumn

      public TableColumn getColumn(int columnIndex)
      返回columnIndex处的TableColumn对象。
      指定者:
      getColumn 在接口 TableColumnModel
      参数:
      columnIndex - 所需列的索引
      返回:
      columnIndex处的TableColumn对象
      抛出:
      ArrayIndexOutOfBoundsException - 如果columnIndex超出范围:(columnIndex < 0 || columnIndex >= getColumnCount())
    • getColumnMargin

      public int getColumnMargin()
      返回TableColumn的宽度边距。默认的columnMargin为1。
      指定者:
      getColumnMargin 在接口 TableColumnModel
      返回:
      TableColumn的最大宽度
      参见:
    • getColumnIndexAtX

      public int getColumnIndexAtX(int x)
      返回位于位置x的列的索引,如果没有列覆盖此点,则返回-1。根据Swing的可分离模型架构,TableColumnModel不知道表列实际上在屏幕上如何显示。列的视觉呈现是使用此模型的视图/控制器对象的责任(通常是JTable)。视图/控制器不需要按顺序从左到右显示列。例如,列可以从右向左显示以适应区域设置偏好,或者某些列可能根据用户的请求隐藏。因为模型不知道列在屏幕上的布局方式,所以给定的xPosition不应被视为二维图形空间中的坐标。相反,它应被视为从模型中第一列的开头开始的宽度。如果需要给定X坐标的列索引在2D空间中的位置,可以使用JTable.columnAtPoint
      指定者:
      getColumnIndexAtX 在接口 TableColumnModel
      参数:
      x - 感兴趣的水平位置
      返回:
      列的索引,如果找不到列则返回-1
      参见:
    • getTotalColumnWidth

      public int getTotalColumnWidth()
      返回所有列的总宽度。
      指定者:
      getTotalColumnWidth 在接口 TableColumnModel
      返回:
      totalColumnWidth属性
    • setSelectionModel

      public void setSelectionModel(ListSelectionModel newModel)
      将此TableColumnModel的选择模型设置为newModel并从新选择模型注册监听器通知。如果newModelnull,则抛出异常。
      指定者:
      setSelectionModel 在接口 TableColumnModel
      参数:
      newModel - 新的选择模型
      抛出:
      IllegalArgumentException - 如果newModelnull
      参见:
    • getSelectionModel

      public ListSelectionModel getSelectionModel()
      返回用于维护列选择状态的ListSelectionModel
      指定者:
      getSelectionModel 在接口 TableColumnModel
      返回:
      提供列选择状态的对象。如果不允许行选择,则返回null
      参见:
    • setColumnSelectionAllowed

      public void setColumnSelectionAllowed(boolean flag)
      设置是否允许列选择。默认值为false。
      指定者:
      setColumnSelectionAllowed 在接口 TableColumnModel
      参数:
      flag - 如果允许列选择则为true,否则为false
      参见:
    • getColumnSelectionAllowed

      public boolean getColumnSelectionAllowed()
      如果允许列选择,则返回true,否则返回false。默认值为false。
      指定者:
      getColumnSelectionAllowed 在接口 TableColumnModel
      返回:
      columnSelectionAllowed属性
      参见:
    • getSelectedColumns

      public int[] getSelectedColumns()
      返回选定列的数组。如果selectionModelnull,则返回一个空数组。
      指定者:
      getSelectedColumns 在接口 TableColumnModel
      返回:
      选定列的数组,如果没有选定任何内容或selectionModelnull,则返回一个空数组
    • getSelectedColumnCount

      public int getSelectedColumnCount()
      返回选定列的数量。
      指定者:
      getSelectedColumnCount 在接口 TableColumnModel
      返回:
      选定列的数量
    • addColumnModelListener

      public void addColumnModelListener(TableColumnModelListener x)
      添加表列模型事件的监听器。
      指定者:
      addColumnModelListener 在接口 TableColumnModel
      参数:
      x - 一个TableColumnModelListener对象
    • removeColumnModelListener

      public void removeColumnModelListener(TableColumnModelListener x)
      移除表列模型事件的监听器。
      指定者:
      removeColumnModelListener 在接口 TableColumnModel
      参数:
      x - 一个TableColumnModelListener对象
    • getColumnModelListeners

      public TableColumnModelListener[] getColumnModelListeners()
      返回在此模型上注册的所有列模型监听器的数组。
      返回:
      所有默认表列模型的ColumnModelListener或如果当前没有注册列模型监听器,则返回一个空数组
      自:
      1.4
      参见:
    • fireColumnAdded

      protected void fireColumnAdded(TableColumnModelEvent e)
      通知所有已注册对此事件类型感兴趣的监听器。事件实例是使用传递给fire方法的参数延迟创建的。
      参数:
      e - 收到的事件
      参见:
    • fireColumnRemoved

      protected void fireColumnRemoved(TableColumnModelEvent e)
      通知所有已注册对此事件类型感兴趣的监听器。事件实例是使用传递给fire方法的参数延迟创建的。
      参数:
      e - 收到的事件
      参见:
    • fireColumnMoved

      protected void fireColumnMoved(TableColumnModelEvent e)
      通知所有已注册对此事件类型感兴趣的侦听器。事件实例是使用传递给fire方法的参数延迟创建的。
      参数:
      e - 收到的事件
      参见:
    • fireColumnSelectionChanged

      protected void fireColumnSelectionChanged(ListSelectionEvent e)
      通知所有已注册对此事件类型感兴趣的侦听器。事件实例是使用传递给fire方法的参数延迟创建的。
      参数:
      e - 收到的事件
      参见:
    • fireColumnMarginChanged

      protected void fireColumnMarginChanged()
      通知所有已注册对此事件类型感兴趣的侦听器。事件实例是使用传递给fire方法的参数延迟创建的。
      参见:
    • getListeners

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

      您可以使用类文字指定listenerType参数,例如FooListener.class。例如,您可以使用以下代码查询DefaultTableColumnModel m的列模型侦听器:

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

      public void propertyChange(PropertyChangeEvent evt)
      属性更改侦听器更改方法。用于跟踪列宽度或首选列宽度的更改。
      指定者:
      propertyChange 在接口 PropertyChangeListener
      参数:
      evt - PropertyChangeEvent
    • valueChanged

      public void valueChanged(ListSelectionEvent e)
      当列选择更改时,转发ListSelectionEventsListSelectionListener
      指定者:
      valueChanged 在接口 ListSelectionListener
      参数:
      e - 更改事件
    • createSelectionModel

      protected ListSelectionModel createSelectionModel()
      创建一个新的默认列表选择模型。
      返回:
      新创建的默认列表选择模型。
    • recalcWidthCache

      protected void recalcWidthCache()
      重新计算所有列的总组合宽度。更新totalColumnWidth属性。