Module java.desktop

Class TableColumn

java.lang.Object
javax.swing.table.TableColumn
所有已实现的接口:
Serializable

public class TableColumn extends Object implements Serializable
TableColumn表示JTable中列的所有属性,如宽度、可调整大小、最小和最大宽度。此外,TableColumn提供了用于显示和编辑此列中的值的渲染器和编辑器插槽。

还可以根据类型而不是列来指定渲染器和编辑器 - 请参阅JTable类中的setDefaultRenderer方法。仅当TableColumn中的渲染器(或编辑器)为null时,才使用此默认机制。

TableColumn存储了JTable中的列与TableModel中的列之间的链接。 modelIndexTableModel中的列,将为此列中的单元格的数据值进行查询。当列在视图中移动时,此modelIndex不会改变。

注意: 一些实现可能假定所有的TableColumnModel都是唯一的,因此我们建议不要将相同的TableColumn实例添加多次到TableColumnModel中。要显示来自模型的相同数据列的TableColumn,请使用具有相同modelIndex的新实例。

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

参见:
  • Field Details

    • COLUMN_WIDTH_PROPERTY

      public static final String COLUMN_WIDTH_PROPERTY
      从Java 2平台v1.3起已过时。请使用字符串字面量来标识属性。
      参见:
    • HEADER_VALUE_PROPERTY

      public static final String HEADER_VALUE_PROPERTY
      从Java 2平台v1.3起已过时。请使用字符串字面量来标识属性。
      参见:
    • HEADER_RENDERER_PROPERTY

      public static final String HEADER_RENDERER_PROPERTY
      从Java 2平台v1.3起已过时。请使用字符串字面量来标识属性。
      参见:
    • CELL_RENDERER_PROPERTY

      public static final String CELL_RENDERER_PROPERTY
      从Java 2平台v1.3起已过时。请使用字符串字面量来标识属性。
      参见:
    • modelIndex

      protected int modelIndex
      要由此TableColumn显示的模型中的列的索引。随着列在视图中移动,modelIndex保持不变。
    • identifier

      protected Object identifier
      此对象不会被JTable的绘图机制内部使用;标识符可以在TableColumn中设置为可选的方式来标记和定位表列。表包不会修改或调用这些标识符对象中的任何方法,除了equals方法,该方法用于DefaultTableColumnModel中的getColumnIndex()方法。
    • width

      protected int width
      列的宽度。
    • minWidth

      protected int minWidth
      列的最小宽度。
    • maxWidth

      protected int maxWidth
      列的最大宽度。
    • headerRenderer

      protected TableCellRenderer headerRenderer
      用于绘制列的标题的渲染器。
    • headerValue

      protected Object headerValue
      列的标题值。
    • cellRenderer

      protected TableCellRenderer cellRenderer
      用于绘制列的数据单元格的渲染器。
    • cellEditor

      protected TableCellEditor cellEditor
      用于编辑列的数据单元格的编辑器。
    • isResizable

      protected boolean isResizable
      如果为true,则允许用户调整列的大小;默认为true。
    • resizedPostingDisableCount

      @Deprecated protected transient int resizedPostingDisableCount
      Deprecated.
      as of Java 2 platform v1.3
      在以前的版本中未使用此字段,目前没有计划在未来支持它。
  • Constructor Details

    • TableColumn

      public TableColumn()
      覆盖方法,使用默认模型索引0,默认宽度75,null渲染器和null编辑器。此方法用于序列化。
      参见:
    • TableColumn

      public TableColumn(int modelIndex)
      覆盖方法,使用默认宽度75,null渲染器和null编辑器。
      参数:
      modelIndex - 表格中为该列提供数据的模型中的列的索引;即使在视图中重新排序列,模型索引仍保持不变
      参见:
    • TableColumn

      public TableColumn(int modelIndex, int width)
      覆盖方法,使用null渲染器和null编辑器。
      参数:
      modelIndex - 表格中为该列提供数据的模型中的列的索引;即使在视图中重新排序列,模型索引仍保持不变
      width - 该列的首选宽度和初始宽度
      参见:
    • TableColumn

      public TableColumn(int modelIndex, int width, TableCellRenderer cellRenderer, TableCellEditor cellEditor)
      创建并初始化具有指定模型索引、宽度、单元格渲染器和单元格编辑器的TableColumn实例;所有TableColumn构造函数都委托给此方法。 width的值用于初始宽度和首选宽度;如果width为负数,则它们被设置为0。最小宽度设置为15,除非初始宽度较小,此时最小宽度设置为初始宽度。

      cellRenderercellEditor参数为null时,JTablegetDefaultRenderergetDefaultEditor方法提供的默认值将根据该列中数据的类型提供默认值。可以通过覆盖JTable中的getCellRenderer方法来绕过此基于列的渲染策略。

      参数:
      modelIndex - 表格中为该列提供数据的模型中的列的索引;即使在视图中重新排序列,模型索引仍保持不变
      width - 该列的首选宽度和初始宽度
      cellRenderer - 用于渲染该列值的对象
      cellEditor - 用于编辑该列值的对象
      参见:
  • Method Details

    • setModelIndex

      @BeanProperty(description="The model index.") public void setModelIndex(int modelIndex)
      设置此列的模型索引。模型索引是将由此TableColumn显示的模型中的列的索引。当TableColumn在视图中移动时,模型索引保持不变。
      参数:
      modelIndex - 新的模型索引
    • getModelIndex

      public int getModelIndex()
      返回此列的模型索引。
      返回:
      modelIndex属性
    • setIdentifier

      @BeanProperty(description="A unique identifier for this column.") public void setIdentifier(Object identifier)
      TableColumn的标识符设置为anIdentifier

      注意:标识符不会被JTable使用,它们纯粹是用于外部标记和定位列的便利。

      参数:
      identifier - 该列的标识符
      参见:
    • getIdentifier

      public Object getIdentifier()
      返回此列的identifier对象。请注意,标识符不会被JTable使用,它们纯粹是用于外部使用的便利。如果identifiernullgetIdentifier()将返回getHeaderValue作为默认值。
      返回:
      identifier属性
      参见:
    • setHeaderValue

      @BeanProperty(description="The text to be used by the header renderer.") public void setHeaderValue(Object headerValue)
      设置将用作headerRenderer值的Object的字符串表示形式。当创建TableColumn时,默认的headerValuenull
      参数:
      headerValue - 新的headerValue
      参见:
    • getHeaderValue

      public Object getHeaderValue()
      返回用作标题渲染器值的Object
      返回:
      headerValue属性
      参见:
    • setHeaderRenderer

      @BeanProperty(description="The header renderer.") public void setHeaderRenderer(TableCellRenderer headerRenderer)
      设置用于绘制TableColumn标题的TableCellRendererheaderRenderer

      标题渲染器负责渲染排序指示器。如果使用排序并指定渲染器,则您的渲染器必须渲染排序指示。

      参数:
      headerRenderer - 新的headerRenderer
      参见:
    • getHeaderRenderer

      public TableCellRenderer getHeaderRenderer()
      返回用于绘制TableColumn标题的TableCellRenderer。当headerRenderernull时,JTableHeader使用其defaultRendererheaderRenderer的默认值为null
      返回:
      headerRenderer属性
      参见:
    • setCellRenderer

      @BeanProperty(description="The renderer to use for cell values.") public void setCellRenderer(TableCellRenderer cellRenderer)
      设置JTable用于绘制该列的单个值的TableCellRenderer
      参数:
      cellRenderer - 新的cellRenderer
      参见:
    • getCellRenderer

      public TableCellRenderer getCellRenderer()
      返回JTable用于绘制该列值的TableCellRenderer。该列的cellRenderer不仅控制列的视觉外观,还用于解释TableModel提供的值对象。当cellRenderernull时,JTable使用基于该列单元格类的默认渲染器。 cellRenderer的默认值为null
      返回:
      cellRenderer属性
      参见:
    • setCellEditor

      @BeanProperty(description="The editor to use for cell values.") public void setCellEditor(TableCellEditor cellEditor)
      设置用于编辑该列中单元格时使用的编辑器。
      参数:
      cellEditor - 新的cellEditor
      参见:
    • getCellEditor

      public TableCellEditor getCellEditor()
      返回JTable用于编辑该列值的TableCellEditor。当cellEditornull时,JTable使用基于该列单元格类的默认编辑器。 cellEditor的默认值为null
      返回:
      cellEditor属性
      参见:
    • setWidth

      @BeanProperty(description="The width of the column.") public void setWidth(int width)
      不应使用此方法设置JTable中列的宽度,请改用setPreferredWidth。与AWT中的布局管理器一样,JTable会在表格本身大小更改时或列的首选宽度更改时自动调整列的宽度。因此,通过编程方式设置宽度没有长期效果。

      此方法将该列的宽度设置为width。如果width超过最小宽度或最大宽度,则会调整为适当的限制值。

      参数:
      width - 新的宽度
      参见:
    • getWidth

      public int getWidth()
      返回TableColumn的宽度。默认宽度为75。
      返回:
      width属性
      参见:
    • setPreferredWidth

      @BeanProperty(description="The preferred width of the column.") public void setPreferredWidth(int preferredWidth)
      将此列的首选宽度设置为preferredWidth。如果preferredWidth超过最小宽度或最大宽度,则会调整为适当的限制值。

      有关如何从preferredWidth计算JTable(和JTableHeader)中列的宽度的详细信息,请参见JTable中的doLayout方法。

      参数:
      preferredWidth - 新的首选宽度
      另请参阅:
    • getPreferredWidth

      public int getPreferredWidth()
      返回TableColumn的首选宽度。默认首选宽度为75。
      返回:
      preferredWidth属性
      另请参阅:
    • setMinWidth

      @BeanProperty(description="The minimum width of the column.") public void setMinWidth(int minWidth)
      TableColumn的最小宽度设置为minWidth,如果需要,调整新的最小宽度以确保0 <= minWidth <= maxWidth。例如,如果minWidth参数为负数,则此方法将minWidth属性设置为0。

      如果widthpreferredWidth属性的值小于新的最小宽度,则此方法将该属性设置为新的最小宽度。

      参数:
      minWidth - 新的最小宽度
      另请参阅:
    • getMinWidth

      public int getMinWidth()
      返回TableColumn的最小宽度。无论是用户还是以编程方式,TableColumn的宽度都不能小于此值。
      返回:
      minWidth属性
      另请参阅:
    • setMaxWidth

      @BeanProperty(description="The maximum width of the column.") public void setMaxWidth(int maxWidth)
      TableColumn的最大宽度设置为maxWidth,或者如果maxWidth小于最小宽度,则设置为最小宽度。

      如果widthpreferredWidth属性的值大于新的最大宽度,则此方法将该属性设置为新的最大宽度。

      参数:
      maxWidth - 新的最大宽度
      另请参阅:
    • getMaxWidth

      public int getMaxWidth()
      返回TableColumn的最大宽度。无论是用户还是以编程方式,TableColumn的宽度都不能大于此值。默认的最大宽度为Integer.MAX_VALUE。
      返回:
      maxWidth属性
      另请参阅:
    • setResizable

      @BeanProperty(description="Whether or not this column can be resized.") public void setResizable(boolean isResizable)
      设置此列是否可以调整大小。
      参数:
      isResizable - 如果为true,则允许调整大小;否则为false
      另请参阅:
    • getResizable

      public boolean getResizable()
      如果允许用户调整TableColumn的宽度,则返回true,否则返回false。无论此设置如何,都可以以编程方式更改宽度。默认值为true。
      返回:
      isResizable属性
      另请参阅:
    • sizeWidthToFit

      public void sizeWidthToFit()
      调整TableColumn的大小以适应其标题单元格的宽度。如果标题渲染器为null(默认情况),则此方法不执行任何操作。否则,它将此列的最小、最大和首选宽度设置为标题渲染器提供的组件的最小、最大和首选大小的宽度。此TableColumn的瞬态“width”属性也设置为首选宽度。请注意,此方法不会被表包内部使用。
      另请参阅:
    • disableResizedPosting

      @Deprecated public void disableResizedPosting()
      Deprecated.
      as of Java 2 platform v1.3
      在以前的版本中未使用此字段,目前也没有计划支持它。
    • enableResizedPosting

      @Deprecated public void enableResizedPosting()
      Deprecated.
      as of Java 2 platform v1.3
      在以前的版本中未使用此字段,目前也没有计划支持它。
    • addPropertyChangeListener

      public void addPropertyChangeListener(PropertyChangeListener listener)
      向监听器列表中添加一个PropertyChangeListener。该监听器为此类的所有绑定属性注册。
      • 此TableColumn的modelIndex(“modelIndex”)
      • 此TableColumn的标识符(“identifier”)
      • 此TableColumn的标题值(“headerValue”)
      • 此TableColumn的标题渲染器(“headerRenderer”)
      • 此TableColumn的单元格渲染器(“cellRenderer”)
      • 此TableColumn的单元格编辑器(“cellEditor”)
      • 此TableColumn的宽度(“width”)
      • 此TableColumn的首选宽度(“preferredWidth”)
      • 此TableColumn的最小宽度(“minWidth”)
      • 此TableColumn的最大宽度(“maxWidth”)
      • 此TableColumn的可调整状态(“isResizable”)
      参数:
      listener - 要添加的监听器
      另请参阅:
    • removePropertyChangeListener

      public void removePropertyChangeListener(PropertyChangeListener listener)
      从监听器列表中移除一个PropertyChangeListener。要移除的PropertyChangeListener已注册为所有属性。
      参数:
      listener - 要移除的监听器
    • getPropertyChangeListeners

      public PropertyChangeListener[] getPropertyChangeListeners()
      返回添加到此TableColumn的所有PropertyChangeListener的数组。
      返回:
      添加的所有PropertyChangeListener或如果未添加任何监听器则返回空数组
      自:
      1.4
    • createDefaultHeaderRenderer

      protected TableCellRenderer createDefaultHeaderRenderer()
      从Java 2平台v1.3开始,此方法不会被TableColumn构造函数调用。以前,此方法由TableColumn用于创建默认的标题渲染器。从Java 2平台v1.3开始,默认的标题渲染器为null。现在,JTableHeader为其提供自己的共享默认渲染器,就像JTable为其单元格渲染器所做的那样。
      返回:
      默认的标题渲染器
      另请参阅: