JavaTM 2 Platform
Standard Ed. 5.0

javax.swing
类 JTable

java.lang.Object
  继承者 java.awt.Component
      继承者 java.awt.Container
          继承者 javax.swing.JComponent
              继承者 javax.swing.JTable
所有已实现的接口:
ImageObserver, MenuContainer, Serializable, EventListener, Accessible, CellEditorListener, ListSelectionListener, TableColumnModelListener, TableModelListener, Scrollable

public class JTable
extends JComponent
implements TableModelListener, Scrollable, TableColumnModelListener, ListSelectionListener, CellEditorListener, Accessible

JTable 用来显示和编辑规则的二维单元表。有关面向任务的文档和使用 JTable 的示例,请参阅《The Java Tutorial》中的 How to Use Tables 一节。

JTable 有很多用来自定义其呈现和编辑的设施,同时提供了这些功能的默认设置,从而可轻松地设置简单表。例如,要设置一个 10 行 10 列的表:

      TableModel dataModel = new AbstractTableModel() {
          public int getColumnCount() { return 10; }
          public int getRowCount() { return 10;}
          public Object getValueAt(int row, int col) { return new Integer(row*col); }
      };
      JTable table = new JTable(dataModel);
      JScrollPane scrollpane = new JScrollPane(table);
 

注意,如果要在单独的视图中(在 JScrollPane 外)使用 JTable 并显示表标题,则可以使用 getTableHeader() 获取并单独显示它。

设计使用 JTable 的应用程序时,要严格注意用来表示表数据的数据结构。DefaultTableModel 是一个模型实现,它使用一个 Vector 来存储所有单元格的值。该 Vector 由包含多个 ObjectVector 组成。除了将数据从应用程序复制到 DefaultTableModel 中之外,还可以 TableModel 接口的方法来包装数据,这样可将数据直接传递到 JTable,如以上示例所示。这通常可以提高应用程序的效率,因为模型可以自由选择最适合数据的内部表示形式。在决定使用 AbstractTableModel 还是使用 DefaultTableModel 方面有一个好的实践经验,即在创建子类时使用 AbstractTableModel 作为基类,在不需要创建子类时则使用 DefaultTableModel

在发行的源代码演示部分中的 "TableExample" 目录内给出了许多 JTable 用法的完整示例,包括如何使用 JTable 来提供一个可编辑的数据视图(数据来自数据库),以及如何修改正显示的列以使用特殊的渲染器和编辑器。

JTable 使用惟一的整数来引用它所显示的模型的行和列。JTable 只是采用表格的单元格范围,并在绘制时使用 getValueAt(int, int) 从模型中检索值。

默认情况下,在 JTable 中对列进行重新安排,这样在视图中列的出现顺序与模型中列的顺序不同。但这根本不影响模型的实现:当列重新排列时,JTable 在内部保持列的新顺序,并在查询模型前转换其列的索引。

因此编写 TableModel 时,不必侦听列的重排事件,因为将在模型自己的坐标系统中查询它,而不管视图中发生了什么情况。在示例部分中有一个排序算法的演示,此演示正是使用了此技术在另一个坐标系统中进行排序,其中更改行的顺序,而不更改列的顺序。

J2SE 5 在 JTable 中添加了一些方法,从而为某些普通打印需求提供方便的访问。print() 是一个简单的新方法,它允许快速简单地向应用程序添加打印支持。另外,新的 getPrintable(javax.swing.JTable.PrintMode, java.text.MessageFormat, java.text.MessageFormat) 方法可满足更高级的打印需求。

对于所有的 JComponent 类,可以使用 InputMapActionMapAction 对象与 KeyStroke 进行关联,并在指定的条件下执行操作。

警告:此类的序列化对象与以后的 Swing 版本不兼容。当前序列化支持适用于短期存储,或适用于在运行相同 Swing 版本的应用程序之间进行 RMI(Remote Method Invocation,远程方法调用)。从 1.4 版本开始,已在 java.beans 包中添加了支持所有 JavaBeansTM 长期存储的功能。请参见 XMLEncoder


嵌套类摘要
protected  class JTable.AccessibleJTable
          此类实现对 JTable 类的可访问性支持。
static class JTable.PrintMode
          用于打印 JTable 的打印模式。
 
从类 javax.swing.JComponent 继承的嵌套类/接口
JComponent.AccessibleJComponent
 
从类 java.awt.Container 继承的嵌套类/接口
Container.AccessibleAWTContainer
 
从类 java.awt.Component 继承的嵌套类/接口
Component.AccessibleAWTComponent, Component.BltBufferStrategy, Component.FlipBufferStrategy
 
字段摘要
static int AUTO_RESIZE_ALL_COLUMNS
          在所有的调整大小操作中,按比例调整所有的列。
static int AUTO_RESIZE_LAST_COLUMN
          在所有的调整大小操作中,只对最后一列进行调整。
static int AUTO_RESIZE_NEXT_COLUMN
          在 UI 中调整列时,对其下一列进行相反方向的调整。
static int AUTO_RESIZE_OFF
          不自动调整列的宽度;使用滚动条。
static int AUTO_RESIZE_SUBSEQUENT_COLUMNS
          在 UI 调整中,更改后续列以保持总宽度不变,这是默认的行为。
protected  boolean autoCreateColumnsFromModel
          如果为 true,则该表对 TableModel 进行查询以构建默认的列集。
protected  int autoResizeMode
          确定表是否自动调整列的宽度以占用表的整个宽度,以及如何进行调整。
protected  TableCellEditor cellEditor
          重写当前单元格占用的屏幕空间并允许用户更改其内容的对象。
protected  boolean cellSelectionEnabled
          从 Java 2 platform v1.3 开始已过时。
protected  TableColumnModel columnModel
          表的 TableColumnModel
protected  TableModel dataModel
          表的 TableModel
protected  Hashtable defaultEditorsByColumnClass
          对象的一个表,它显示并编辑单元格的内容,通过在 TableModel 接口的 getColumnClass 中所声明的类建立索引。
protected  Hashtable defaultRenderersByColumnClass
          对象的一个表,它显示单元格的内容,通过在 TableModel 接口的 getColumnClass 中所声明的类建立索引。
protected  int editingColumn
          标识正在编辑的单元格的列。
protected  int editingRow
          标识正在编辑的单元格的行。
protected  Component editorComp
          在编辑时进行编辑处理的 Component
protected  Color gridColor
          网格的颜色。
protected  Dimension preferredViewportSize
          Scrollable 接口使用它来确定初始的可见区域。
protected  int rowHeight
          表中每一行的高度,以像素为单位。
protected  int rowMargin
          每行中单元格之间间距的高度,以像素为单位。
protected  boolean rowSelectionAllowed
          如果行选择在此表中是允许的,则返回 true。
protected  Color selectionBackground
          已选定单元格的背景色。
protected  Color selectionForeground
          已选定单元格的前景色。
protected  ListSelectionModel selectionModel
          表的 ListSelectionModel,用来保持对行选择的跟踪。
protected  boolean showHorizontalLines
          如果 showHorizontalLines 为 true,则表在单元格之间绘制水平行。
protected  boolean showVerticalLines
          如果 showVerticalLines 为 true,则表在单元格之间绘制垂直行。
protected  JTableHeader tableHeader
          表所使用的 TableHeader
 
从类 javax.swing.JComponent 继承的字段
accessibleContext, listenerList, TOOL_TIP_TEXT_KEY, ui, UNDEFINED_CONDITION, WHEN_ANCESTOR_OF_FOCUSED_COMPONENT, WHEN_FOCUSED, WHEN_IN_FOCUSED_WINDOW
 
从类 java.awt.Component 继承的字段
BOTTOM_ALIGNMENT, CENTER_ALIGNMENT, LEFT_ALIGNMENT, RIGHT_ALIGNMENT, TOP_ALIGNMENT
 
从接口 java.awt.image.ImageObserver 继承的字段
ABORT, ALLBITS, ERROR, FRAMEBITS, HEIGHT, PROPERTIES, SOMEBITS, WIDTH
 
构造方法摘要
JTable()
          构造默认的 JTable,使用默认的数据模型、默认的列模型和默认的选择模型对其进行初始化。
JTable(int numRows, int numColumns)
          使用 DefaultTableModel 构造具有空单元格的 numRows 行和 numColumns 列的 JTable
JTable(Object[][] rowData, Object[] columnNames)
          构造 JTable,用来显示二维数组 rowData 中的值,其列名称为 columnNames
JTable(TableModel dm)
          构造 JTable,使用 dm 作为数据模型、默认的列模型和默认的选择模型对其进行初始化。
JTable(TableModel dm, TableColumnModel cm)
          构造 JTable,使用 dm 作为数据模型、cm 作为列模型和默认的选择模型对其进行初始化。
JTable(TableModel dm, TableColumnModel cm, ListSelectionModel sm)
          构造 JTable,使用 dm 作为数据模型、cm 作为列模型和 sm 作为选择模型对其进行初始化。
JTable(Vector rowData, Vector columnNames)
          构造 JTable,用来显示 VectorsVector (rowData) 中的值,其列名称为 columnNames
 
方法摘要
 void addColumn(TableColumn aColumn)
          将 aColumn 追加到此 JTable 的列模型所保持的列数组的结尾。
 void addColumnSelectionInterval(int index0, int index1)
          将从 index0index1(包含)之间的列添加到当前选择中。
 void addNotify()
          调用 configureEnclosingScrollPane 方法。
 void addRowSelectionInterval(int index0, int index1)
          将从 index0index1(包含)之间的行添加到当前选择中。
 void changeSelection(int rowIndex, int columnIndex, boolean toggle, boolean extend)
          根据以下两个标志的状态,更新表的选择模型:toggleextend
 void clearSelection()
          取消选中所有已选定的行和列。
 void columnAdded(TableColumnModelEvent e)
          将列添加到表的列模型时调用。
 int columnAtPoint(Point point)
          返回 point 位置的列索引,如果结果不在 [0, getColumnCount()-1] 范围内,则返回 -1。
 void columnMarginChanged(ChangeEvent e)
          当列由于间距的改变而被移动时调用。
 void columnMoved(TableColumnModelEvent e)
          重新定位列时调用。
 void columnRemoved(TableColumnModelEvent e)
          从表的列模型中移除列时调用。
 void columnSelectionChanged(ListSelectionEvent e)
          TableColumnModel 的选择模型更改时调用。
protected  void configureEnclosingScrollPane()
          如果此 JTable 是一个封闭 JScrollPaneviewportView(通常情况如此),那么可通过安装表的 tableHeader 作为滚动窗格的 columnHeaderView 来配置此 ScrollPane
 int convertColumnIndexToModel(int viewColumnIndex)
          将视图中位于 viewColumnIndex 的列索引映射到表模型中的列索引。
 int convertColumnIndexToView(int modelColumnIndex)
          将表模型中位于 modelColumnIndex 的列索引映射到视图中的列索引。
protected  TableColumnModel createDefaultColumnModel()
          返回默认的列模型对象,它是一个 DefaultTableColumnModel
 void createDefaultColumnsFromModel()
          使用 TableModel 接口中定义的 getColumnCount 方法根据数据模型创建默认的表列。
protected  TableModel createDefaultDataModel()
          返回默认的表模型对象,它是一个 DefaultTableModel
protected  void createDefaultEditors()
          为 object、number 和 boolean 值创建默认的单元格编辑器。
protected  void createDefaultRenderers()
          为 object、number、double、date、boolean 和 icon 创建默认的单元格渲染器。
protected  ListSelectionModel createDefaultSelectionModel()
          返回默认的选择模型对象,它是一个 DefaultListSelectionModel
protected  JTableHeader createDefaultTableHeader()
          返回默认的表标题对象,它是一个 JTableHeader
static JScrollPane createScrollPaneForTable(JTable aTable)
          已过时。 从 Swing version 1.0.2 开始,由 new JScrollPane(aTable) 取代。
 void doLayout()
          使此表布局其行和列。
 boolean editCellAt(int row, int column)
          如果 rowcolumn 位置的索引在有效范围内,并且这些索引处的单元格是可编辑的,则以编程方式启动该位置单元格的编辑。
 boolean editCellAt(int row, int column, EventObject e)
          如果 rowcolumn 位置的索引在有效范围内,并且这些索引处的单元格是可编辑的,则以编程方式启动该位置单元格的编辑。
 void editingCanceled(ChangeEvent e)
          编辑取消时调用。
 void editingStopped(ChangeEvent e)
          编辑结束时调用。
 AccessibleContext getAccessibleContext()
          获取与此 JTable 关联的 AccessibleContext。
 boolean getAutoCreateColumnsFromModel()
          确定表是否要根据模型创建默认的列。
 int getAutoResizeMode()
          返回表的自动调整模式。
 TableCellEditor getCellEditor()
          返回单元格编辑器。
 TableCellEditor getCellEditor(int row, int column)
          返回适于由 rowcolumn 所指定单元格的编辑器。
 Rectangle getCellRect(int row, int column, boolean includeSpacing)
          返回位于 rowcolumn 相交位置的单元格矩形。
 TableCellRenderer getCellRenderer(int row, int column)
          返回适于由行和列所指定单元格的渲染器。
 boolean getCellSelectionEnabled()
          如果同时启用了行选择模型和列选择模型,则返回 true。
 TableColumn getColumn(Object identifier)
          返回表中列的 TableColumn 对象,当使用 equals 进行比较时,表的标识符等于 identifier
 Class<?> getColumnClass(int column)
          返回出现在视图中 column 列位置处的列类型。
 int getColumnCount()
          返回列模型中的列数。
 TableColumnModel getColumnModel()
          返回包含此表所有列信息的 TableColumnModel
 String getColumnName(int column)
          返回出现在视图中 column 列位置处的列名称。
 boolean getColumnSelectionAllowed()
          如果可以选择列,则返回 true。
 TableCellEditor getDefaultEditor(Class<?> columnClass)
          尚未在 TableColumn 中设置编辑器时,返回要使用的编辑器。
 TableCellRenderer getDefaultRenderer(Class<?> columnClass)
          尚未在 TableColumn 中设置渲染器时,返回要使用的单元格渲染器。
 boolean getDragEnabled()
          获取 dragEnabled 属性的值。
 int getEditingColumn()
          当前正在被编辑的单元格的列索引。
 int getEditingRow()
          返回包含当前正在被编辑的单元格的行索引。
 Component getEditorComponent()
          返回处理编辑会话的组件。
 Color getGridColor()
          返回用来绘制网格线的颜色。
 Dimension getIntercellSpacing()
          返回单元格之间的水平间距和垂直间距。
 TableModel getModel()
          返回提供此 JTable 所显示数据的 TableModel
 Dimension getPreferredScrollableViewportSize()
          返回此表视口 (viewport) 的首选大小。
 Printable getPrintable(JTable.PrintMode printMode, MessageFormat headerFormat, MessageFormat footerFormat)
          返回打印此 JTable 中所使用的 Printable
 int getRowCount()
          返回此表模型中的行数。
 int getRowHeight()
          返回表的行高,以像素为单位。
 int getRowHeight(int row)
          返回 row 中单元格的高度,以像素为单位。
 int getRowMargin()
          获取单元格之间的间隔,以像素为单位。
 boolean getRowSelectionAllowed()
          如果可以选择行,则返回 true。
 int getScrollableBlockIncrement(Rectangle visibleRect, int orientation, int direction)
          返回 visibleRect.heightvisibleRect.width,这取决于此表的方向。
 boolean getScrollableTracksViewportHeight()
          返回 false 指示表的高度不是由视口的高度所决定的。
 boolean getScrollableTracksViewportWidth()
          如果 autoResizeMode 设置为 AUTO_RESIZE_OFF,则返回 false,这指示表的宽度不是由视口的宽度所决定的。
 int getScrollableUnitIncrement(Rectangle visibleRect, int orientation, int direction)
          返回完全公开了一个新行或新列(取决于方向)的滚动增量(以像素为单位)。
 int getSelectedColumn()
          返回首个选定列的索引,如果没有选定的列,则返回 -1。
 int getSelectedColumnCount()
          返回选定的列数。
 int[] getSelectedColumns()
          返回所有选定列的索引。
 int getSelectedRow()
          返回首个选定行的索引,如果没有选定的行,则返回 -1。
 int getSelectedRowCount()
          返回选定的行数。
 int[] getSelectedRows()
          返回所有选定行的索引。
 Color getSelectionBackground()
          返回选定单元格的背景色。
 Color getSelectionForeground()
          返回选定单元格的前景色。
 ListSelectionModel getSelectionModel()
          返回用来维持行选择状态的 ListSelectionModel
 boolean getShowHorizontalLines()
          如果表绘制单元格之间的水平线,则返回 true,否则返回 false。
 boolean getShowVerticalLines()
          如果表绘制单元格之间的垂直线,则返回 true,否则返回 false。
 boolean getSurrendersFocusOnKeystroke()
          如果当击键导致编辑器被激活时编辑器应该获得焦点,则返回 true
 JTableHeader getTableHeader()
          返回此 JTable 所使用的 tableHeader
 String getToolTipText(MouseEvent event)
          重写 JComponentgetToolTipText 方法,从而允许使用渲染器的提示(如果设置了文本)。
 TableUI getUI()
          返回呈现此组件的 L&F 对象。
 String getUIClassID()
          返回用于构造呈现此组件时使用的 L&F 类名称的后缀。
 Object getValueAt(int row, int column)
          返回 rowcolumn 位置的单元格值。
protected  void initializeLocalVars()
          将表的属性初始化为其默认值。
 boolean isCellEditable(int row, int column)
          如果 rowcolumn 位置的单元格是可编辑的,则返回 true。
 boolean isCellSelected(int row, int column)
          如果指定的索引位于行和列的有效范围内,并且在该指定位置的单元格被选定,则返回 true。
 boolean isColumnSelected(int column)
          如果指定的索引位于列的有效范围内,并且在该索引位置的列被选定,则返回 true。
 boolean isEditing()
          如果正在编辑单元格,则返回 true。
 boolean isRowSelected(int row)
          如果指定的索引位于行的有效范围内,并且在该索引位置的行被选定,则返回 true。
 void moveColumn(int column, int targetColumn)
          将视图中的 column 列移动到当前被 targetColumn 列所占用的位置。
protected  String paramString()
          返回此表的字符串表示形式。
 Component prepareEditor(TableCellEditor editor, int row, int column)
          通过查询 rowcolumn 处单元格值的数据模型和单元格选择状态来准备编辑器。
 Component prepareRenderer(TableCellRenderer renderer, int row, int column)
          通过查询 rowcolumn 处单元格值的数据模型和单元格选择状态来准备渲染器。
 boolean print()
          一个便捷的方法,它显示一个打印对话框,然后以 PrintMode.FIT_WIDTH 模式打印此 JTable,不打印标题或脚注文本。
 boolean print(JTable.PrintMode printMode)
          一个便捷的方法,它显示一个打印对话框,然后以给定的打印模式打印此 JTable,不打印标题或脚注文本。
 boolean print(JTable.PrintMode printMode, MessageFormat headerFormat, MessageFormat footerFormat)
          一个便捷的方法,它显示一个打印对话框,然后以给定的打印模式打印此 JTable,打印指定的标题和脚注文本。
 boolean print(JTable.PrintMode printMode, MessageFormat headerFormat, MessageFormat footerFormat, boolean showPrintDialog, PrintRequestAttributeSet attr, boolean interactive)
          打印此 JTable
protected  boolean processKeyBinding(KeyStroke ks, KeyEvent e, int condition, boolean pressed)
          调用此方法,以处理由于 KeyEvent e 而针对 ks 的键绑定。
 void removeColumn(TableColumn aColumn)
          从此 JTable 的列数组中移除 aColumn
 void removeColumnSelectionInterval(int index0, int index1)
          取消选中从 index0index1(包括)的列。
 void removeEditor()
          丢弃编辑器对象并释放它用于单元格呈现的资源。
 void removeNotify()
          调用 unconfigureEnclosingScrollPane 方法。
 void removeRowSelectionInterval(int index0, int index1)
          取消选中从 index0index1(包括)的行。
protected  void resizeAndRepaint()
          等效于 revalidate 后跟 repaint
 int rowAtPoint(Point point)
          返回 point 位置的行索引,如果结果不在 [0, getRowCount()-1] 范围内,则返回 -1。
 void selectAll()
          选择表中的所有行、列和单元格。
 void setAutoCreateColumnsFromModel(boolean autoCreateColumnsFromModel)
          设置此表的 autoCreateColumnsFromModel 标志。
 void setAutoResizeMode(int mode)
          当调整表的大小时,设置表的自动调整模式。
 void setCellEditor(TableCellEditor anEditor)
          设置 cellEditor 变量。
 void setCellSelectionEnabled(boolean cellSelectionEnabled)
          设置此表是否允许同时存在行选择和列选择。
 void setColumnModel(TableColumnModel columnModel)
          将此表的列模型设置为 newModel,并为来自新列模型的侦听器通知注册它。
 void setColumnSelectionAllowed(boolean columnSelectionAllowed)
          设置是否可以选择此模型中的列。
 void setColumnSelectionInterval(int index0, int index1)
          选择从 index0index1(包含)之间的列。
 void setDefaultEditor(Class<?> columnClass, TableCellEditor editor)
          如果尚未在 TableColumn 中设置编辑器,则设置要使用的默认单元格编辑器。
 void setDefaultRenderer(Class<?> columnClass, TableCellRenderer renderer)
          如果在 TableColumn 中未设置渲染器,则设置要使用的默认单元格渲染器。
 void setDragEnabled(boolean b)
          设置 dragEnabled 属性,该属性必须为 true 才能确保启用对此组件的自动拖动处理(拖放操作的第一部分)。
 void setEditingColumn(int aColumn)
          设置 editingColumn 变量。
 void setEditingRow(int aRow)
          设置 editingRow 变量。
 void setGridColor(Color gridColor)
          将用来绘制网格线的颜色设置为 gridColor 并重新显示它。
 void setIntercellSpacing(Dimension intercellSpacing)
          将 rowMargincolumnMargin(单元格之间间距的高度和宽度)设置为 intercellSpacing
 void setModel(TableModel dataModel)
          将此表的数据模型设置为 newModel,并为来自新数据模型的侦听器通知注册它。
 void setPreferredScrollableViewportSize(Dimension size)
          设置此表视口的首选大小。
 void setRowHeight(int rowHeight)
          将所有单元格的高度设置为 rowHeight(以像素为单位)、重新验证并重新绘制它。
 void setRowHeight(int row, int rowHeight)
          将 row 的高度设置为 rowHeight、重新验证并重新绘制它。
 void setRowMargin(int rowMargin)
          设置相临行中单元格之间的间距。
 void setRowSelectionAllowed(boolean rowSelectionAllowed)
          设置是否可以选择此模型中的行。
 void setRowSelectionInterval(int index0, int index1)
          选择从 index0index1(包含)之间的行。
 void setSelectionBackground(Color selectionBackground)
          设置选定单元格的背景色。
 void setSelectionForeground(Color selectionForeground)
          设置选定单元格的前景色。
 void setSelectionMode(int selectionMode)
          将表的选择模式设置为只允许单个选择、单个连续单元格选择或多个连续选择。
 void setSelectionModel(ListSelectionModel newModel)
          将此表的行选择模型设置为 newModel,并为来自新选择模型的侦听器通知进行注册。
 void setShowGrid(boolean showGrid)
          设置表是否绘制单元格周围的网格线。
 void setShowHorizontalLines(boolean showHorizontalLines)
          设置表是否绘制单元格之间的水平线。
 void setShowVerticalLines(boolean showVerticalLines)
          设置表是否绘制单元格之间的垂直线。
 void setSurrendersFocusOnKeystroke(boolean surrendersFocusOnKeystroke)
          设置由于 JTable 为某个单元格转发键盘事件而导致编辑器被激活时,此 JTable 中的编辑器是否获得键盘焦点。
 void setTableHeader(JTableHeader tableHeader)
          将此 JTable 所使用的 tableHeader 设置为 newHeader
 void setUI(TableUI ui)
          设置呈现此组件并进行重新绘制的 L&F 对象。
 void setValueAt(Object aValue, int row, int column)
          设置表模型中 rowcolumn 位置的单元格值。
 void sizeColumnsToFit(boolean lastColumnOnly)
          已过时。 从 Swing version 1.0.3 开始,由 doLayout() 取代。
 void sizeColumnsToFit(int resizingColumn)
          从 Java 2 platform v1.4 开始已过时。
 void tableChanged(TableModelEvent e)
          当此表的 TableModel 生成 TableModelEvent 时调用。
protected  void unconfigureEnclosingScrollPane()
          通过将封闭滚动窗格的 columnHeaderView 替换为 null,可以起到 configureEnclosingScrollPane 的相反作用。
 void updateUI()
          UIManager 发出的表明 L&F 已经更改的通知。
 void valueChanged(ListSelectionEvent e)
          行选择更改时调用,重新绘制来显示新的选择。
 
从类 javax.swing.JComponent 继承的方法
addAncestorListener, addVetoableChangeListener, computeVisibleRect, contains, createToolTip, disable, enable, firePropertyChange, firePropertyChange, firePropertyChange, fireVetoableChange, getActionForKeyStroke, getActionMap, getAlignmentX, getAlignmentY, getAncestorListeners, getAutoscrolls, getBorder, getBounds, getClientProperty, getComponentGraphics, getComponentPopupMenu, getConditionForKeyStroke, getDebugGraphicsOptions, getDefaultLocale, getFontMetrics, getGraphics, getHeight, getInheritsPopupMenu, getInputMap, getInputMap, getInputVerifier, getInsets, getInsets, getListeners, getLocation, getMaximumSize, getMinimumSize, getNextFocusableComponent, getPopupLocation, getPreferredSize, getRegisteredKeyStrokes, getRootPane, getSize, getToolTipLocation, getToolTipText, getTopLevelAncestor, getTransferHandler, getVerifyInputWhenFocusTarget, getVetoableChangeListeners, getVisibleRect, getWidth, getX, getY, grabFocus, isDoubleBuffered, isLightweightComponent, isManagingFocus, isOpaque, isOptimizedDrawingEnabled, isPaintingTile, isRequestFocusEnabled, isValidateRoot, paint, paintBorder, paintChildren, paintComponent, paintImmediately, paintImmediately, print, printAll, printBorder, printChildren, printComponent, processComponentKeyEvent, processKeyEvent, processMouseEvent, processMouseMotionEvent, putClientProperty, registerKeyboardAction, registerKeyboardAction, removeAncestorListener, removeVetoableChangeListener, repaint, repaint, requestDefaultFocus, requestFocus, requestFocus, requestFocusInWindow, requestFocusInWindow, resetKeyboardActions, reshape, revalidate, scrollRectToVisible, setActionMap, setAlignmentX, setAlignmentY, setAutoscrolls, setBackground, setBorder, setComponentPopupMenu, setDebugGraphicsOptions, setDefaultLocale, setDoubleBuffered, setEnabled, setFocusTraversalKeys, setFont, setForeground, setInheritsPopupMenu, setInputMap, setInputVerifier, setMaximumSize, setMinimumSize, setNextFocusableComponent, setOpaque, setPreferredSize, setRequestFocusEnabled, setToolTipText, setTransferHandler, setUI, setVerifyInputWhenFocusTarget, setVisible, unregisterKeyboardAction, update
 
从类 java.awt.Container 继承的方法
add, add, add, add, add, addContainerListener, addImpl, addPropertyChangeListener, addPropertyChangeListener, applyComponentOrientation, areFocusTraversalKeysSet, countComponents, deliverEvent, findComponentAt, findComponentAt, getComponent, getComponentAt, getComponentAt, getComponentCount, getComponents, getComponentZOrder, getContainerListeners, getFocusTraversalKeys, getFocusTraversalPolicy, getLayout, getMousePosition, insets, invalidate, isAncestorOf, isFocusCycleRoot, isFocusCycleRoot, isFocusTraversalPolicyProvider, isFocusTraversalPolicySet, layout, list, list, locate, minimumSize, paintComponents, preferredSize, printComponents, processContainerEvent, processEvent, remove, remove, removeAll, removeContainerListener, setComponentZOrder, setFocusCycleRoot, setFocusTraversalPolicy, setFocusTraversalPolicyProvider, setLayout, transferFocusBackward, transferFocusDownCycle, validate, validateTree
 
从类 java.awt.Component 继承的方法
action, add, addComponentListener, addFocusListener, addHierarchyBoundsListener, addHierarchyListener, addInputMethodListener, addKeyListener, addMouseListener, addMouseMotionListener, addMouseWheelListener, bounds, checkImage, checkImage, coalesceEvents, contains, createImage, createImage, createVolatileImage, createVolatileImage, disableEvents, dispatchEvent, enable, enableEvents, enableInputMethods, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, getBackground, getBounds, getColorModel, getComponentListeners, getComponentOrientation, getCursor, getDropTarget, getFocusCycleRootAncestor, getFocusListeners, getFocusTraversalKeysEnabled, getFont, getForeground, getGraphicsConfiguration, getHierarchyBoundsListeners, getHierarchyListeners, getIgnoreRepaint, getInputContext, getInputMethodListeners, getInputMethodRequests, getKeyListeners, getLocale, getLocation, getLocationOnScreen, getMouseListeners, getMouseMotionListeners, getMousePosition, getMouseWheelListeners, getName, getParent, getPeer, getPropertyChangeListeners, getPropertyChangeListeners, getSize, getToolkit, getTreeLock, gotFocus, handleEvent, hasFocus, hide, imageUpdate, inside, isBackgroundSet, isCursorSet, isDisplayable, isEnabled, isFocusable, isFocusOwner, isFocusTraversable, isFontSet, isForegroundSet, isLightweight, isMaximumSizeSet, isMinimumSizeSet, isPreferredSizeSet, isShowing, isValid, isVisible, keyDown, keyUp, list, list, list, location, lostFocus, mouseDown, mouseDrag, mouseEnter, mouseExit, mouseMove, mouseUp, move, nextFocus, paintAll, postEvent, prepareImage, prepareImage, processComponentEvent, processFocusEvent, processHierarchyBoundsEvent, processHierarchyEvent, processInputMethodEvent, processMouseWheelEvent, remove, removeComponentListener, removeFocusListener, removeHierarchyBoundsListener, removeHierarchyListener, removeInputMethodListener, removeKeyListener, removeMouseListener, removeMouseMotionListener, removeMouseWheelListener, removePropertyChangeListener, removePropertyChangeListener, repaint, repaint, repaint, resize, resize, setBounds, setBounds, setComponentOrientation, setCursor, setDropTarget, setFocusable, setFocusTraversalKeysEnabled, setIgnoreRepaint, setLocale, setLocation, setLocation, setName, setSize, setSize, show, show, size, toString, transferFocus, transferFocusUpCycle
 
从类 java.lang.Object 继承的方法
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

字段详细信息

AUTO_RESIZE_OFF

public static final int AUTO_RESIZE_OFF
不自动调整列的宽度;使用滚动条。

另请参见:
常量字段值

AUTO_RESIZE_NEXT_COLUMN

public static final int AUTO_RESIZE_NEXT_COLUMN
在 UI 中调整列时,对其下一列进行相反方向的调整。

另请参见:
常量字段值

AUTO_RESIZE_SUBSEQUENT_COLUMNS

public static final int AUTO_RESIZE_SUBSEQUENT_COLUMNS
在 UI 调整中,更改后续列以保持总宽度不变,这是默认的行为。

另请参见:
常量字段值

AUTO_RESIZE_LAST_COLUMN

public static final int AUTO_RESIZE_LAST_COLUMN
在所有的调整大小操作中,只对最后一列进行调整。

另请参见:
常量字段值

AUTO_RESIZE_ALL_COLUMNS

public static final int AUTO_RESIZE_ALL_COLUMNS
在所有的调整大小操作中,按比例调整所有的列。

另请参见:
常量字段值

dataModel

protected TableModel dataModel
表的 TableModel


columnModel

protected TableColumnModel columnModel
表的 TableColumnModel


selectionModel

protected ListSelectionModel selectionModel
表的 ListSelectionModel,用来保持对行选择的跟踪。


tableHeader

protected JTableHeader tableHeader
表所使用的 TableHeader


rowHeight

protected int rowHeight
表中每一行的高度,以像素为单位。


rowMargin

protected int rowMargin
每行中单元格之间间距的高度,以像素为单位。


gridColor

protected Color gridColor
网格的颜色。


showHorizontalLines

protected boolean showHorizontalLines
如果 showHorizontalLines 为 true,则表在单元格之间绘制水平行。


showVerticalLines

protected boolean showVerticalLines
如果 showVerticalLines 为 true,则表在单元格之间绘制垂直行。


autoResizeMode

protected int autoResizeMode
确定表是否自动调整列的宽度以占用表的整个宽度,以及如何进行调整。


autoCreateColumnsFromModel

protected boolean autoCreateColumnsFromModel
如果为 true,则该表对 TableModel 进行查询以构建默认的列集。


preferredViewportSize

protected Dimension preferredViewportSize
Scrollable 接口使用它来确定初始的可见区域。


rowSelectionAllowed

protected boolean rowSelectionAllowed
如果行选择在此表中是允许的,则返回 true。


cellSelectionEnabled

protected boolean cellSelectionEnabled
从 Java 2 platform v1.3 开始已过时。请使用 rowSelectionAllowed 属性和 columnModelcolumnSelectionAllowed 属性。或者使用方法 getCellSelectionEnabled


editorComp

protected transient Component editorComp
在编辑时进行编辑处理的 Component


cellEditor

protected transient TableCellEditor cellEditor
重写当前单元格占用的屏幕空间并允许用户更改其内容的对象。


editingColumn

protected transient int editingColumn
标识正在编辑的单元格的列。


editingRow

protected transient int editingRow
标识正在编辑的单元格的行。


defaultRenderersByColumnClass

protected transient Hashtable defaultRenderersByColumnClass
对象的一个表,它显示单元格的内容,通过在 TableModel 接口的 getColumnClass 中所声明的类建立索引。


defaultEditorsByColumnClass

protected transient Hashtable defaultEditorsByColumnClass
对象的一个表,它显示并编辑单元格的内容,通过在 TableModel 接口的 getColumnClass 中所声明的类建立索引。


selectionForeground

protected Color selectionForeground
已选定单元格的前景色。


selectionBackground

protected Color selectionBackground
已选定单元格的背景色。

构造方法详细信息

JTable

public JTable()
构造默认的 JTable,使用默认的数据模型、默认的列模型和默认的选择模型对其进行初始化。

另请参见:
createDefaultDataModel(), createDefaultColumnModel(), createDefaultSelectionModel()

JTable

public JTable(TableModel dm)
构造 JTable,使用 dm 作为数据模型、默认的列模型和默认的选择模型对其进行初始化。

参数:
dm - 表的数据模型
另请参见:
createDefaultColumnModel(), createDefaultSelectionModel()

JTable

public JTable(TableModel dm,
              TableColumnModel cm)
构造 JTable,使用 dm 作为数据模型、cm 作为列模型和默认的选择模型对其进行初始化。

参数:
dm - 表的数据模型
cm - 表的列模型
另请参见:
createDefaultSelectionModel()

JTable

public JTable(TableModel dm,
              TableColumnModel cm,
              ListSelectionModel sm)
构造 JTable,使用 dm 作为数据模型、cm 作为列模型和 sm 作为选择模型对其进行初始化。如果任何参数为 null,则此方法将使用相应的默认模型初始化该表。如果 cm 为非 null,则 autoCreateColumnsFromModel 标志设置为 false,否则设置为 true,并且使用 dm 中各列的合适 TableColumns 来生成列模型。

参数:
dm - 表的数据模型
cm - 表的列模型
sm - 表的行选择模型
另请参见:
createDefaultDataModel(), createDefaultColumnModel(), createDefaultSelectionModel()

JTable

public JTable(int numRows,
              int numColumns)
使用 DefaultTableModel 构造具有空单元格的 numRows 行和 numColumns 列的 JTable。列名称采用 "A"、"B"、"C" 等的形式。

参数:
numRows - 表占有的行数
numColumns - 表占有的列数
另请参见:
DefaultTableModel

JTable

public JTable(Vector rowData,
              Vector columnNames)
构造 JTable,用来显示 VectorsVector (rowData) 中的值,其列名称为 columnNamesrowData 中包含的 Vectors 应该包含该行的值。换句话说,可以通过以下代码获取第 1 行,第 5 列单元格的值:

((Vector)rowData.elementAt(1)).elementAt(5);

参数:
rowData - 新表的数据
columnNames - 每列的名称

JTable

public JTable(Object[][] rowData,
              Object[] columnNames)
构造 JTable,用来显示二维数组 rowData 中的值,其列名称为 columnNamesrowData 是一个行数组,因此可以通过以下代码获取第 1 行,第 5 列单元格的值:

 rowData[1][5]; 

所有行的长度必须与 columnNames 的长度相同。

参数:
rowData - 新表的数据
columnNames - 每列的名称
方法详细信息

addNotify

public void addNotify()
调用 configureEnclosingScrollPane 方法。

覆盖:
JComponent 中的 addNotify
另请参见:
configureEnclosingScrollPane()

configureEnclosingScrollPane

protected void configureEnclosingScrollPane()
如果此 JTable 是一个封闭 JScrollPaneviewportView(通常情况如此),那么可通过安装表的 tableHeader 作为滚动窗格的 columnHeaderView 来配置此 ScrollPane。以正常方式向 JScrollPane 添加 JTable 时,请使用 new JScrollPane(myTable)addNotify 是在 JTable 中调用的(表被添加到视口中时)。JTableaddNotify 方法依次调用此方法,此方法是受保护的,以便子类可以重写此默认的安装过程。

另请参见:
addNotify()

removeNotify

public void removeNotify()
调用 unconfigureEnclosingScrollPane 方法。

覆盖:
JComponent 中的 removeNotify
另请参见:
unconfigureEnclosingScrollPane()

unconfigureEnclosingScrollPane

protected void unconfigureEnclosingScrollPane()
通过将封闭滚动窗格的 columnHeaderView 替换为 null,可以起到 configureEnclosingScrollPane 的相反作用。JTableremoveNotify 方法调用此方法,此方法是受保护的,以便子类可以重写此默认的卸载过程。

另请参见:
removeNotify(), configureEnclosingScrollPane()

createScrollPaneForTable

@Deprecated
public static JScrollPane createScrollPaneForTable(JTable aTable)
已过时。 从 Swing version 1.0.2 开始,由 new JScrollPane(aTable) 取代。

等效于 new JScrollPane(aTable)


setTableHeader

public void setTableHeader(JTableHeader tableHeader)
将此 JTable 所使用的 tableHeader 设置为 newHeadertableHeadernull 是合法的。

参数:
tableHeader - 新的 tableHeader
另请参见:
getTableHeader()

getTableHeader

public JTableHeader getTableHeader()
返回此 JTable 所使用的 tableHeader

返回:
此表所使用的 tableHeader
另请参见:
setTableHeader(javax.swing.table.JTableHeader)

setRowHeight

public void setRowHeight(int rowHeight)
将所有单元格的高度设置为 rowHeight(以像素为单位)、重新验证并重新绘制它。单元格的高度等于行高减去行间距。

参数:
rowHeight - 新的行高
抛出:
IllegalArgumentException - 如果 rowHeight 小于 1
另请参见:
getRowHeight()

getRowHeight

public int getRowHeight()
返回表的行高,以像素为单位。默认的行高为 16.0。

返回:
表的行高,以像素为单位
另请参见:
setRowHeight(int)

setRowHeight

public void setRowHeight(int row,
                         int rowHeight)
row 的高度设置为 rowHeight、重新验证并重新绘制它。此行中单元格的高度等于行高减去行间距。

参数:
row - 更改高度的行
rowHeight - 新的行高,以像素为单位
抛出:
IllegalArgumentException - 如果 rowHeight 小于 1

getRowHeight

public int getRowHeight(int row)
返回 row 中单元格的高度,以像素为单位。

参数:
row - 要返回其高度的行
返回:
行中单元格的高度,以像素为单位

setRowMargin

public void setRowMargin(int rowMargin)
设置相临行中单元格之间的间距。

参数:
rowMargin - 一行中单元格之间的像素数
另请参见:
getRowMargin()

getRowMargin

public int getRowMargin()
获取单元格之间的间隔,以像素为单位。等效于:getIntercellSpacing().height

返回:
一行中单元格之间的像素数
另请参见:
setRowMargin(int)

setIntercellSpacing

public void setIntercellSpacing(Dimension intercellSpacing)
rowMargincolumnMargin(单元格之间间距的高度和宽度)设置为 intercellSpacing

参数:
intercellSpacing - 指定了单元格之间新高度和宽度的 Dimension
另请参见:
getIntercellSpacing()

getIntercellSpacing

public Dimension getIntercellSpacing()
返回单元格之间的水平间距和垂直间距。默认的间距为 (1, 1),它提供了绘制网格的空间。

返回:
单元格之间的水平间距和垂直间距
另请参见:
setIntercellSpacing(java.awt.Dimension)

setGridColor

public void setGridColor(Color gridColor)
将用来绘制网格线的颜色设置为 gridColor 并重新显示它。默认的颜色取决于外观。

参数:
gridColor - 网格线的新颜色
抛出:
IllegalArgumentException - 如果 gridColornull
另请参见:
getGridColor()

getGridColor

public Color getGridColor()
返回用来绘制网格线的颜色。默认的颜色取决于外观。

返回:
用来绘制网格线的颜色
另请参见:
setGridColor(java.awt.Color)

setShowGrid

public void setShowGrid(boolean showGrid)
设置表是否绘制单元格周围的网格线。如果 showGrid 为 true,则绘制网格线;如果为 false,则不绘制。没有 getShowGrid 方法,因为此状态保存在两个变量中,这两个变量是 showHorizontalLinesshowVerticalLines,可以对其中任何一个变量单独进行查询。

参数:
showGrid - 如果表视图应该绘制网格线,则为 true
另请参见:
setShowVerticalLines(boolean), setShowHorizontalLines(boolean)

setShowHorizontalLines

public void setShowHorizontalLines(boolean showHorizontalLines)
设置表是否绘制单元格之间的水平线。如果 showHorizontalLines 为 true,则绘制水平线;如果为 false,则不绘制。

参数:
showHorizontalLines - 如果表视图应该绘制水平线,则为 true
另请参见:
getShowHorizontalLines(), setShowGrid(boolean), setShowVerticalLines(boolean)

setShowVerticalLines

public void setShowVerticalLines(boolean showVerticalLines)
设置表是否绘制单元格之间的垂直线。如果 showVerticalLines 为 true,则绘制垂直线;如果为 false,则不绘制。

参数:
showVerticalLines - 如果表视图应该绘制垂直线,则为 true
另请参见:
getShowVerticalLines(), setShowGrid(boolean), setShowHorizontalLines(boolean)

getShowHorizontalLines

public boolean getShowHorizontalLines()
如果表绘制单元格之间的水平线,则返回 true,否则返回 false。默认值为 true。

返回:
如果表绘制单元格之间的水平线,则返回 true;否则返回 false
另请参见:
setShowHorizontalLines(boolean)

getShowVerticalLines

public boolean getShowVerticalLines()
如果表绘制单元格之间的垂直线,则返回 true,否则返回 false。默认值为 true。

返回:
如果表绘制单元格之间的垂直线,则返回 true;否则返回 false
另请参见:
setShowVerticalLines(boolean)

setAutoResizeMode

public void setAutoResizeMode(int mode)
当调整表的大小时,设置表的自动调整模式。

参数:
mode - 5 个合法值之一:AUTO_RESIZE_OFF、AUTO_RESIZE_NEXT_COLUMN、AUTO_RESIZE_SUBSEQUENT_COLUMNS、AUTO_RESIZE_LAST_COLUMN、AUTO_RESIZE_ALL_COLUMNS
另请参见:
getAutoResizeMode(), doLayout()

getAutoResizeMode

public int getAutoResizeMode()
返回表的自动调整模式。默认的模式为 AUTO_RESIZE_SUBSEQUENT_COLUMNS。

返回:
表的 autoResizeMode
另请参见:
setAutoResizeMode(int), doLayout()

setAutoCreateColumnsFromModel

public void setAutoCreateColumnsFromModel(boolean autoCreateColumnsFromModel)
设置此表的 autoCreateColumnsFromModel 标志。如果 autoCreateColumnsFromModel 由 false 更改为 true,则此方法调用 createDefaultColumnsFromModel

参数:
autoCreateColumnsFromModel - 如果 JTable 应该自动创建列,则为 true
另请参见:
getAutoCreateColumnsFromModel(), createDefaultColumnsFromModel()

getAutoCreateColumnsFromModel

public boolean getAutoCreateColumnsFromModel()
确定表是否要根据模型创建默认的列。如果为 true,则 setModel 将清除任何现有的列并根据新模型创建新的列。同样,如果 tableChanged 通知中的事件指定整个表已更改,则将重新构建各列。默认值为 true。

返回:
表的 autoCreateColumnsFromModel
另请参见:
setAutoCreateColumnsFromModel(boolean), createDefaultColumnsFromModel()

createDefaultColumnsFromModel

public void createDefaultColumnsFromModel()
使用 TableModel 接口中定义的 getColumnCount 方法根据数据模型创建默认的表列。

在根据模型的信息创建新的列之前,清除任何现有的列。

另请参见:
getAutoCreateColumnsFromModel()

setDefaultRenderer

public void setDefaultRenderer(Class<?> columnClass,
                               TableCellRenderer renderer)
如果在 TableColumn 中未设置渲染器,则设置要使用的默认单元格渲染器。如果 renderer 为 null,则移除此 columnClass 的默认渲染器。

参数:
columnClass - 设置此 columnClass 的默认单元格渲染器
renderer - 此 columnClass 要使用的默认单元格渲染器
另请参见:
getDefaultRenderer(java.lang.Class), setDefaultEditor(java.lang.Class, javax.swing.table.TableCellEditor)

getDefaultRenderer

public TableCellRenderer getDefaultRenderer(Class<?> columnClass)
尚未在 TableColumn 中设置渲染器时,返回要使用的单元格渲染器。呈现单元格时,是根据列中各单元格的类从各项的 Hashtable 中获取渲染器的。如果没有此 columnClass 的项,则此方法返回最相关超类的项。JTable 安装了可以修改和替换的 ObjectNumberBoolean 项。

参数:
columnClass - 返回此 columnClass 的默认单元格渲染器
返回:
此 columnClass 的渲染器
另请参见:
setDefaultRenderer(java.lang.Class, javax.swing.table.TableCellRenderer), getColumnClass(int)

setDefaultEditor

public void setDefaultEditor(Class<?> columnClass,
                             TableCellEditor editor)
如果尚未在 TableColumn 中设置编辑器,则设置要使用的默认单元格编辑器。如果表不需要进行编辑,或者表中的特定列不需要编辑,则使用 TableModel 接口中的 isCellEditable 方法来确保此 JTable 在这些列中不启动编辑器。如果 editor 为 null,则移除此 columnClass 的默认编辑器。

参数:
columnClass - 设置此 columnClass 的默认单元格编辑器
editor - 此 columnClass 要使用的默认单元格编辑器
另请参见:
TableModel.isCellEditable(int, int), getDefaultEditor(java.lang.Class), setDefaultRenderer(java.lang.Class, javax.swing.table.TableCellRenderer)

getDefaultEditor

public TableCellEditor getDefaultEditor(Class<?> columnClass)
尚未在 TableColumn 中设置编辑器时,返回要使用的编辑器。编辑单元格时,是根据列中各单元格的类从各项的 Hashtable 中获取编辑器的。如果没有此 columnClass 的项,则此方法返回最相关超类的项。JTable 安装了可以修改和替换的 ObjectNumberBoolean 项。

参数:
columnClass - 返回此 columnClass 的默认单元格编辑器
返回:
此 columnClass 要使用的默认单元格编辑器
另请参见:
setDefaultEditor(java.lang.Class, javax.swing.table.TableCellEditor), getColumnClass(int)

setDragEnabled

public void setDragEnabled(boolean b)
设置 dragEnabled 属性,该属性必须为 true 才能确保启用对此组件的自动拖动处理(拖放操作的第一部分)。需要将 transferHandler 属性设置为非 null 值,以便拖动执行操作。dragEnabled 属性的默认值为 false

当启用自动化拖动处理时,只要用户在选择上按住鼠标按钮,并将鼠标移动几个像素,多数外观就会开始拖放操作。因此,将此属性设置为 true 可以对选择行为产生微妙的影响。

有些外观可能不支持自动拖放;它们将忽略此属性。可以通过修改该组件直接调用 TransferHandlerexportAsDrag 方法来解决此类外观。

参数:
b - 设置 dragEnabled 属性的值
抛出:
HeadlessException - 如果 btrue,并且 GraphicsEnvironment.isHeadless() 返回 true
从以下版本开始:
1.4
另请参见:
GraphicsEnvironment.isHeadless(), getDragEnabled(), JComponent.setTransferHandler(javax.swing.TransferHandler), TransferHandler

getDragEnabled

public boolean getDragEnabled()
获取 dragEnabled 属性的值。

返回:
dragEnabled 属性的值
从以下版本开始:
1.4
另请参见:
setDragEnabled(boolean)

setSelectionMode

public void setSelectionMode(int selectionMode)
将表的选择模式设置为只允许单个选择、单个连续单元格选择或多个连续选择。

注:JTable 提供了用于处理行选择和列选择的所有方法。设置状态时(例如 setSelectionMode),它不仅更新行选择模型的模式,而且还将设置 columnModel 选择模型中的类似值。如果希望在不同的模式中操作行选择模型和列选择模型,请直接设置这二者。

JTable 的行选择模型和列选择模型都默认使用 DefaultListSelectionModel,以便 JTableJList 的工作方式相同。有关各种模式的详细信息,请参阅 JList 中的 setSelectionMode 方法。

另请参见:
JList.setSelectionMode(int)

setRowSelectionAllowed

public void setRowSelectionAllowed(boolean rowSelectionAllowed)
设置是否可以选择此模型中的行。

参数:
rowSelectionAllowed - 如果此模型允许行选择,则为 true
另请参见:
getRowSelectionAllowed()

getRowSelectionAllowed

public boolean getRowSelectionAllowed()
如果可以选择行,则返回 true。

返回:
如果可以选择行,则返回 true;否则返回 false
另请参见:
setRowSelectionAllowed(boolean)

setColumnSelectionAllowed

public void setColumnSelectionAllowed(boolean columnSelectionAllowed)
设置是否可以选择此模型中的列。

参数:
columnSelectionAllowed - 如果此模型允许列选择,则为 true
另请参见:
getColumnSelectionAllowed()

getColumnSelectionAllowed

public boolean getColumnSelectionAllowed()
如果可以选择列,则返回 true。

返回:
如果可以选择列,则返回 true;否则返回 false
另请参见:
setColumnSelectionAllowed(boolean)

setCellSelectionEnabled

public void setCellSelectionEnabled(boolean cellSelectionEnabled)
设置此表是否允许同时存在行选择和列选择。当允许时,表将行选择模型和列选择模型的相交部分作为选定的单元格。重写 isCellSelected 以更改此默认行为。此方法等效于将 columnModelrowSelectionAllowed 属性和 columnSelectionAllowed 属性均设置为所提供的值。

参数:
cellSelectionEnabled - 如果允许同时存在行选择和列选择,则为 true
另请参见:
getCellSelectionEnabled(), isCellSelected(int, int)

getCellSelectionEnabled

public boolean getCellSelectionEnabled()
如果同时启用了行选择模型和列选择模型,则返回 true。等效于 getRowSelectionAllowed() && getColumnSelectionAllowed()

返回:
如果同时启用了行选择模型和列选择模型,则返回 true
另请参见:
setCellSelectionEnabled(boolean)

selectAll

public void selectAll()
选择表中的所有行、列和单元格。


clearSelection

public void clearSelection()
取消选中所有已选定的行和列。


setRowSelectionInterval

public void setRowSelectionInterval(int index0,
                                    int index1)
选择从 index0index1(包含)之间的行。

参数:
index0 - 间隔的一端
index1 - 间隔的另一端
抛出:
IllegalArgumentException - 如果 index0index1 位于 [0,getRowCount()-1] 范围外

setColumnSelectionInterval

public void setColumnSelectionInterval(int index0,
                                       int index1)
选择从 index0index1(包含)之间的列。

参数:
index0 - 间隔的一端
index1 - 间隔的另一端
抛出:
IllegalArgumentException - 如果 index0index1 位于 [0, getColumnCount()-1] 范围外

addRowSelectionInterval

public void addRowSelectionInterval(int index0,
                                    int index1)
将从 index0index1(包含)之间的行添加到当前选择中。

参数:
index0 - 间隔的一端
index1 - 间隔的另一端
抛出:
IllegalArgumentException - 如果 index0index1 位于 [0, getRowCount()-1] 范围外

addColumnSelectionInterval

public void addColumnSelectionInterval(int index0,
                                       int index1)
将从 index0index1(包含)之间的列添加到当前选择中。

参数:
index0 - 间隔的一端
index1 - 间隔的另一端
抛出:
IllegalArgumentException - 如果 index0index1 位于 [0, getColumnCount()-1] 范围外

removeRowSelectionInterval

public void removeRowSelectionInterval(int index0,
                                       int index1)
取消选中从 index0index1(包括)的行。

参数:
index0 - 间隔的一端
index1 - 间隔的另一端
抛出:
IllegalArgumentException - 如果 index0index1 位于 [0, getRowCount()-1] 范围外

removeColumnSelectionInterval

public void removeColumnSelectionInterval(int index0,
                                          int index1)
取消选中从 index0index1(包括)的列。

参数:
index0 - 间隔的一端
index1 - 间隔的另一端
抛出:
IllegalArgumentException - 如果 index0index1 位于 [0, getColumnCount()-1] 范围外

getSelectedRow

public int getSelectedRow()
返回首个选定行的索引,如果没有选定的行,则返回 -1。

返回:
首个选定行的索引

getSelectedColumn

public int getSelectedColumn()
返回首个选定列的索引,如果没有选定的列,则返回 -1。

返回:
首个选定列的索引。

getSelectedRows

public int[] getSelectedRows()
返回所有选定行的索引。

返回:
包含所有选定行索引的整数数组,如果没有选定的行,则返回一个空数组
另请参见:
getSelectedRow()

getSelectedColumns

public int[] getSelectedColumns()
返回所有选定列的索引。

返回:
包含所有选定列索引的整数数组,如果没有选定的列,则返回一个空数组
另请参见:
getSelectedColumn()

getSelectedRowCount

public int getSelectedRowCount()
返回选定的行数。

返回:
选定的行数,如果没有选定的行,则返回 0

getSelectedColumnCount

public int getSelectedColumnCount()
返回选定的列数。

返回:
选定的列数,如果没有选定的列,则返回 0

isRowSelected

public boolean isRowSelected(int row)
如果指定的索引位于行的有效范围内,并且在该索引位置的行被选定,则返回 true。

返回:
如果 row 是有效的索引,并且在该索引位置的行被选定(其中 0 表示第一行),则返回 true

isColumnSelected

public boolean isColumnSelected(int column)
如果指定的索引位于列的有效范围内,并且在该索引位置的列被选定,则返回 true。

参数:
column - 列模型中的列
返回:
如果 column 是有效的索引,并且在该索引位置的列被选定(其中 0 表示第一列),则返回 true

isCellSelected

public boolean isCellSelected(int row,
                              int column)
如果指定的索引位于行和列的有效范围内,并且在该指定位置的单元格被选定,则返回 true。

参数:
row - 正在被查询的行
column - 正在被查询的列
返回:
如果 rowcolumn 是有效的索引,并且在索引 (row, column) 位置的单元格被选定(其中第一行和第一列位于索引 0),则返回 true

changeSelection

public void changeSelection(int rowIndex,
                            int columnIndex,
                            boolean toggle,
                            boolean extend)
根据以下两个标志的状态,更新表的选择模型:toggleextend。大多数选择的更改是通过此方法来传递的,以便子类可能重写此行为,其中这些更改是 UI 所接收的键盘事件或鼠标事件的结果。某些 UI 可能需要的功能多于此方法所提供的功能(例如在操作不连续选择的 lead 时),并且对于某些选择更改可能不调用到此方法中。

此实现使用以下约定:

参数:
rowIndex - 影响 row 的选择
columnIndex - 影响 column 的选择
toggle - 参见上面的描述
extend - 如果为 true,则扩展当前的选择

getSelectionForeground

public Color getSelectionForeground()
返回选定单元格的前景色。

返回:
foreground 属性的 Color 对象
另请参见:
setSelectionForeground(java.awt.Color), setSelectionBackground(java.awt.Color)

setSelectionForeground

public void setSelectionForeground(Color selectionForeground)
设置选定单元格的前景色。单元格渲染器可以使用此颜色来呈现选定单元格的文本和图形。

此属性的默认值由外观实现来定义。

这是一个 JavaBeans bound 属性。

参数:
selectionForeground - 用于选定列表项前景中的 Color
另请参见:
getSelectionForeground(), setSelectionBackground(java.awt.Color), JComponent.setForeground(java.awt.Color), JComponent.setBackground(java.awt.Color), JComponent.setFont(java.awt.Font)

getSelectionBackground

public Color getSelectionBackground()
返回选定单元格的背景色。

返回:
用于选定列表项背景中的 Color
另请参见:
setSelectionBackground(java.awt.Color), setSelectionForeground(java.awt.Color)

setSelectionBackground

public void setSelectionBackground(Color selectionBackground)
设置选定单元格的背景色。单元格渲染器可以使用此颜色填充选定单元格。

此属性的默认值由外观实现来定义。

这是一个 JavaBeans bound 属性。

参数:
selectionBackground - 用于选定单元格背景的 Color
另请参见:
getSelectionBackground(), setSelectionForeground(java.awt.Color), JComponent.setForeground(java.awt.Color), JComponent.setBackground(java.awt.Color), JComponent.setFont(java.awt.Font)

getColumn

public TableColumn getColumn(Object identifier)
返回表中列的 TableColumn 对象,当使用 equals 进行比较时,表的标识符等于 identifier

参数:
identifier - 标识符对象
返回:
与标识符相匹配的 TableColumn 对象
抛出:
IllegalArgumentException - 如果 identifiernull 或者没有 TableColumn 具有此标识符

convertColumnIndexToModel

public int convertColumnIndexToModel(int viewColumnIndex)
将视图中位于 viewColumnIndex 的列索引映射到表模型中的列索引。返回模型中的对应列索引。如果 viewColumnIndex 小于 0,则返回 viewColumnIndex

参数:
viewColumnIndex - 视图中的列索引
返回:
模型中的对应列索引
另请参见:
convertColumnIndexToView(int)

convertColumnIndexToView

public int convertColumnIndexToView(int modelColumnIndex)
将表模型中位于 modelColumnIndex 的列索引映射到视图中的列索引。返回视图中的对应列索引;如果此列不是正在显示的列,则返回 -1。如果 modelColumnIndex 小于 0,则返回 modelColumnIndex

参数:
modelColumnIndex - 模型中的列索引
返回:
视图中的对应列索引
另请参见:
convertColumnIndexToModel(int)

getRowCount

public int getRowCount()
返回此表模型中的行数。

返回:
此表模型中的行数
另请参见:
getColumnCount()

getColumnCount

public int getColumnCount()
返回列模型中的列数。注意,这可能与表模型中的列数不同。

返回:
表中的列数
另请参见:
getRowCount(), removeColumn(javax.swing.table.TableColumn)

getColumnName

public String getColumnName(int column)
返回出现在视图中 column 列位置处的列名称。

参数:
column - 视图中所查询的列
返回:
视图中 column 位置的列名称,其中第一列为列 0

getColumnClass

public Class<?> getColumnClass(int column)
返回出现在视图中 column 列位置处的列类型。

参数:
column - 视图中所查询的列
返回:
视图中 column 位置的列类型,其中第一列为列 0

getValueAt

public Object getValueAt(int row,
                         int column)
返回 rowcolumn 位置的单元格值。

:列是以表视图的显示顺序指定的,而不以 TableModel 的列顺序指定的。这是一项重要的区别,因为在用户重新安排表中的列时,视图中给定索引处的列将更改。同时用户的操作永远不会影响模型的列顺序。

参数:
row - 其值要被查询的行
column - 其值要被查询的列
返回:
指定单元格处的 Object

setValueAt

public void setValueAt(Object aValue,
                       int row,
                       int column)
设置表模型中 rowcolumn 位置的单元格值。

注:列是以表视图的显示顺序指定的,而不以 TableModel 的列顺序指定的。这是一项重要的区别,因为在用户重新安排表中的列时,视图中给定索引处的列将更改。同时用户的操作永远不会影响模型的列顺序。 aValue 是一个新值。

参数:
aValue - 新值
row - 要改变的单元格所处的行
column - 要改变的单元格所处的列
另请参见:
getValueAt(int, int)

isCellEditable

public boolean isCellEditable(int row,
                              int column)
如果 rowcolumn 位置的单元格是可编辑的,则返回 true。否则,在单元格上调用的 setValueAt 无效。

注:列是以表视图的显示顺序指定的,而不以 TableModel 的列顺序指定的。这是一项重要的区别,因为在用户重新安排表中的列时,视图中给定索引处的列将更改。同时用户的操作永远不会影响模型的列顺序。

参数:
row - 其值要被查询的行
column - 其值要被查询的列
返回:
如果单元格是可编辑的,则返回 true
另请参见:
setValueAt(java.lang.Object, int, int)

addColumn

public void addColumn(TableColumn aColumn)
aColumn 追加到此 JTable 的列模型所保持的列数组的结尾。如果 aColumn 的列名称为 null,则将 aColumn 的列名称设置为 getModel().getColumnName() 所返回的名称。

要向此 JTable 添加一列,以用给定的 widthcellRenderercellEditor 来显示模型中第 modelColumn 列的数据,可以使用以下方法:


      addColumn(new TableColumn(modelColumn, width, cellRenderer, cellEditor));

  
[TableColumn 构造方法中的任何一个方法都可以用来替代此方法。]模型的列号存储在 TableColumn 中,在呈现和编辑过程中使用该列号来定位模型中合适的数据值。当列在视图中重新排序时,不更改模型的列号。

参数:
aColumn - 要添加的 TableColumn
另请参见:
removeColumn(javax.swing.table.TableColumn)

removeColumn

public void removeColumn(TableColumn aColumn)
从此 JTable 的列数组中移除 aColumn。注:此方法不从模型中移除数据列;它只移除负责显示它的 TableColumn

参数:
aColumn - 要移除的 TableColumn
另请参见:
addColumn(javax.swing.table.TableColumn)

moveColumn

public void moveColumn(int column,
                       int targetColumn)
将视图中的 column 列移动到当前被 targetColumn 列所占用的位置。targetColumn 位置上的原有列向左或右移动以留出空间。

参数:
column - 要移动列的索引
targetColumn - 列的新索引

columnAtPoint

public int columnAtPoint(Point point)
返回 point 位置的列索引,如果结果不在 [0, getColumnCount()-1] 范围内,则返回 -1。

参数:
point - 要查询的位置
返回:
point 位置的列索引,如果结果不在 [0, getColumnCount()-1] 范围内,则返回 -1
另请参见:
rowAtPoint(java.awt.Point)

rowAtPoint

public int rowAtPoint(Point point)
返回 point 位置的行索引,如果结果不在 [0, getRowCount()-1] 范围内,则返回 -1。

参数:
point - 要查询的位置
返回:
point 位置的行索引,如果结果不在 [0, getRowCount()-1] 范围内,则返回 -1
另请参见:
columnAtPoint(java.awt.Point)

getCellRect

public Rectangle getCellRect(int row,
                             int column,
                             boolean includeSpacing)
返回位于 rowcolumn 相交位置的单元格矩形。如果 includeSpacing 为 true,则返回的值具有指定行和列的完整高度和宽度。如果为 false,则返回的矩形为单元格空间减去单元格间的间隙,以便在呈现期间设置该属性后,返回正在呈现和编辑的组件的真实边界。

如果列索引有效但是行索引小于 0,则此方法返回一个矩形,此矩形的 yheight 设置为合适的值,其 xwidth 值设置为 0。通常,不管是行索引还是列索引指示适当区域外的单元格时,此方法都返回一个矩形,它描绘了表范围内最近单元格的最近边。当行索引和列索引都超出范围时,返回的矩形覆盖了最近单元格的最近点。

在所有的情形中,使用此方法沿一个轴的计算结果不会因为沿另一个轴的计算出现异常而导致失败。当单元格无效时,忽略 includeSpacing 参数。

参数:
row - 所需单元格位于的行索引
column - 所需单元格位于的列索引;这不一定与该表中数据模型的列索引相同;convertColumnIndexToView(int) 方法可以用来将数据模型的列索引转换为显示的列索引
includeSpacing - 如果为 false,则返回实际的单元格边界,计算方法是从列模型和行模型的高度和宽度减去单元格间距
返回:
包含 rowcolumn 处的单元格的矩形

doLayout

public void doLayout()
使此表布局其行和列。重写此方法可调整列的大小,以适应包含的父级的大小更改。调整表中一列或多列的大小,以便所有此 JTable 列的总宽度等于表的宽度。

开始布局之前,此方法获取 tableHeaderresizingColumn。当此方法作为调整封闭窗口大小的结果被调用时,resizingColumnnull。这意味着调整大小发生在 JTable 的“外部”,并且应该将更改(或 "delta" )分布到所有列,而不管此 JTable 的自动调整大小模式如何。

如果 resizingColumn 不为 null,则它是发生大小更改的表中的一列,而不是表本身。在这种情况下,自动调整大小模式控制额外(或不足)空间在可用列之间的分布方式。

该模式有:

注:JTable 调整列宽时,它绝对遵守其最小值和最大值。但是即使在调用此方法后,列的总宽度仍然可能不等于表的宽度。发生这种情况时,JTable 不将其置于 AUTO_RESIZE_OFF 模式来生成一个滚动条,或者中断其当前自动调整模式的其他提交,相反,它允许其边界设置为大于(或小于)最小总宽度或最大总宽度,这意味着要么没有足够的空间来显示所有的列,要么就是列不能放入 JTable 的边界内。这些情况分别导致在绘制时,某些列或某个区域的剪贴区被绘制为 JTable 的背景色。

用于在可用列之间分布 delta 的机制是由 JTable 类中的一个私有方法提供的:

   adjustSizes(long targetSize, final Resizable3 r, boolean inverse)
 
以下部分是所提供内容的解释。Resizable3 是一个私有接口,它允许包含元素集合的任何数据结构由其他方法通过算法来操作其元素,元素集合可以具有大小、首选大小、最大大小和最低大小。

分布 delta

概述

我们称 "DELTA" 是 r 中各元素的目标大小与首选大小总和之间的差值。单独的大小通过将原始首选大小加上 DELTA 的共享部分来计算,该共享部分基于每个首选大小到其限定边界的距离(最小值或最大值)。

定义

单独的约束称为 min[i]、max[i] 和 pref[i]。

它们相应的和称为:MIN、MAX 和 PREF。

用以下公式计算每个新大小:

          size[i] = pref[i] + delta[i]
 
其中每个单独的 delta[i] 根据以下条件计算:

如果 (DELTA < 0),则处于收缩模式,其中:

                        DELTA
          delta[i] = ------------ * (pref[i] - min[i])
                     (PREF - MIN)
 
如果 (DELTA > 0),则处于扩展模式,其中:

                        DELTA
          delta[i] = ------------ * (max[i] - pref[i])
                      (MAX - PREF)
 

总体效果是总大小向总的最小值或最大值移动相同的百分比 k,此百分比确保适应所需的间距,即 DELTA。

详细信息

估计此处给出的公式计算易受累积舍入误差的影响,该误差是由此操作的有限精确度所引起的(使用 int)。为了处理此问题,要经常重新计算上述乘数,这可将以前迭代中的舍入误差考虑在内。结果是一个生成一组整数的算法,这组整数值的和恰好等于提供的 targetSize,这是通过把舍入误差均匀分散到给定元素上来实现的。

当 MAX 和 MIN 边界被选中时

targetSize 处于 [MIN, MAX] 范围外时,算法将所有大小设置为其适合的限定值(最大值或最小值)。

覆盖:
Container 中的 doLayout
另请参见:
LayoutManager.layoutContainer(java.awt.Container), Container.setLayout(java.awt.LayoutManager), Container.validate()

sizeColumnsToFit

@Deprecated
public void sizeColumnsToFit(boolean lastColumnOnly)
已过时。 从 Swing version 1.0.3 开始,由 doLayout() 取代。

调整表列的大小以适合可用的空间。

另请参见:
doLayout()

sizeColumnsToFit

public void sizeColumnsToFit(int resizingColumn)
从 Java 2 platform v1.4 开始已过时。请使用 doLayout() 方法。

参数:
resizingColumn - 由于大小的改变导致需要进行此调整的列,如果没有这样的列,则为 -1
另请参见:
doLayout()

getToolTipText

public String getToolTipText(MouseEvent event)
重写 JComponentgetToolTipText 方法,从而允许使用渲染器的提示(如果设置了文本)。

注:为了让 JTable 正确显示渲染器的工具提示,JTable 必须是 ToolTipManager 中的注册组件。此操作可在 initializeLocalVars 中自动完成,但是如果之后在 JTable 上调用了 setToolTipText(null),则这是一个注销的表组件,渲染器的提示将不再显示。

覆盖:
JComponent 中的 getToolTipText
另请参见:
JComponent.getToolTipText()

setSurrendersFocusOnKeystroke

public void setSurrendersFocusOnKeystroke(boolean surrendersFocusOnKeystroke)
设置由于 JTable 为某个单元格转发键盘事件而导致编辑器被激活时,此 JTable 中的编辑器是否获得键盘焦点。默认情况下,此属性为 false,且 JTable 保留焦点,除非单击了单元格。

参数:
surrendersFocusOnKeystroke - 如果当击键导致编辑器被激活时编辑器应该获得焦点,则为 true
另请参见:
getSurrendersFocusOnKeystroke()

getSurrendersFocusOnKeystroke

public boolean getSurrendersFocusOnKeystroke()
如果当击键导致编辑器被激活时编辑器应该获得焦点,则返回 true

返回:
如果当击键导致编辑器被激活时编辑器应该获得焦点,则返回 true
另请参见:
setSurrendersFocusOnKeystroke(boolean)

editCellAt

public boolean editCellAt(int row,
                          int column)
如果 rowcolumn 位置的索引在有效范围内,并且这些索引处的单元格是可编辑的,则以编程方式启动该位置单元格的编辑。注意,这是 editCellAt(int, int, null) 的一种便捷方法。

参数:
row - 要编辑的行
column - 要编辑的列
返回:
如果由于任何原因而无法编辑该单元格,或索引无效,则返回 false

editCellAt

public boolean editCellAt(int row,
                          int column,
                          EventObject e)
如果 rowcolumn 位置的索引在有效范围内,并且这些索引处的单元格是可编辑的,则以编程方式启动该位置单元格的编辑。为了防止 JTable 编辑特定的表、列或单元格的值,从 TableModel 接口中的 isCellEditable 方法要返回 false。

参数:
row - 要编辑的行
column - 要编辑的列
e - 要传递到 shouldSelectCell 中的事件;注意从 Java 2 platform v1.2 开始,不再调用 shouldSelectCell
返回:
如果由于任何原因而无法编辑该单元格,或索引无效,则返回 false

isEditing

public boolean isEditing()
如果正在编辑单元格,则返回 true。

返回:
如果表正在编辑一个单元格,则返回 true
另请参见:
editingColumn, editingRow

getEditorComponent

public Component getEditorComponent()
返回处理编辑会话的组件。如果没有编辑的内容,则返回 null。

返回:
处理编辑会话的 Component

getEditingColumn

public int getEditingColumn()
当前正在被编辑的单元格的列索引。如果没有编辑的内容,则返回 -1。

返回:
包含当前正在被编辑的单元格的列索引;如果没有编辑的内容,则返回 -1
另请参见:
editingRow

getEditingRow

public int getEditingRow()
返回包含当前正在被编辑的单元格的行索引。如果没有编辑的内容,则返回 -1。

返回:
包含当前正在被编辑的单元格的行索引;如果没有编辑的内容,则返回 -1
另请参见:
editingColumn

getUI

public TableUI getUI()
返回呈现此组件的 L&F 对象。

返回:
呈现此组件的 TableUI 对象

setUI

public void setUI(TableUI ui)
设置呈现此组件并进行重新绘制的 L&F 对象。

参数:
ui - TableUI L&F 对象
另请参见:
UIDefaults.getUI(javax.swing.JComponent)

updateUI

public void updateUI()
UIManager 发出的表明 L&F 已经更改的通知。用 UIManager 的最新版本替换当前的 UI 对象。

覆盖:
JComponent 中的 updateUI
另请参见:
JComponent.updateUI()

getUIClassID

public String getUIClassID()
返回用于构造呈现此组件时使用的 L&F 类名称的后缀。

覆盖:
JComponent 中的 getUIClassID
返回:
"TableUI" 字符串
另请参见:
JComponent.getUIClassID(), UIDefaults.getUI(javax.swing.JComponent)

setModel

public void setModel(TableModel dataModel)
将此表的数据模型设置为 newModel,并为来自新数据模型的侦听器通知注册它。

参数:
dataModel - 此表的新数据源
抛出:
IllegalArgumentException - 如果 newModelnull
另请参见:
getModel()

getModel

public TableModel getModel()
返回提供此 JTable 所显示数据的 TableModel

返回:
提供此 JTable 所显示数据的 TableModel
另请参见:
setModel(javax.swing.table.TableModel)

setColumnModel

public void setColumnModel(TableColumnModel columnModel)
将此表的列模型设置为 newModel,并为来自新列模型的侦听器通知注册它。还要将 JTableHeader 的列模型设置为 columnModel

参数:
columnModel - 此表的新数据源
抛出:
IllegalArgumentException - 如果 columnModelnull
另请参见:
getColumnModel()

getColumnModel

public TableColumnModel getColumnModel()
返回包含此表所有列信息的 TableColumnModel

返回:
提供该表列状态的对象
另请参见:
setColumnModel(javax.swing.table.TableColumnModel)

setSelectionModel

public void setSelectionModel(ListSelectionModel newModel)
将此表的行选择模型设置为 newModel,并为来自新选择模型的侦听器通知进行注册。

参数:
newModel - 新的选择模型
抛出:
IllegalArgumentException - 如果 newModelnull
另请参见:
getSelectionModel()

getSelectionModel

public ListSelectionModel getSelectionModel()
返回用来维持行选择状态的 ListSelectionModel

返回:
提供行选择状态的对象,如果不允许行选择,则返回 null
另请参见:
setSelectionModel(javax.swing.ListSelectionModel)

tableChanged

public void tableChanged(TableModelEvent e)
当此表的 TableModel 生成 TableModelEvent 时调用。应在该模型的坐标系统中构造 TableModelEvent;当此 JTable 接收事件时,它执行到视图坐标系统的适当映射。

应用程序代码不显式地使用这些方法,它们由 JTable 在内部使用。

注意,从 1.3 版本开始,此方法清除选择(如果有的话)。

指定者:
接口 TableModelListener 中的 tableChanged

columnAdded

public void columnAdded(TableColumnModelEvent e)
将列添加到表的列模型时调用。

应用程序代码不显式地使用这些方法,它们由 JTable 在内部使用。

指定者:
接口 TableColumnModelListener 中的 columnAdded
另请参见:
TableColumnModelListener

columnRemoved

public void columnRemoved(TableColumnModelEvent e)
从表的列模型中移除列时调用。

应用程序代码不显式地使用这些方法,它们由 JTable 在内部使用。

指定者:
接口 TableColumnModelListener 中的 columnRemoved
另请参见:
TableColumnModelListener

columnMoved

public void columnMoved(TableColumnModelEvent e)
重新定位列时调用。如果正在编辑某个单元格,则停止编辑并重新绘制该单元格。

应用程序代码不显式地使用这些方法,它们由 JTable 在内部使用。

指定者:
接口 TableColumnModelListener 中的 columnMoved
参数:
e - 接收到的事件
另请参见:
TableColumnModelListener

columnMarginChanged

public void columnMarginChanged(ChangeEvent e)
当列由于间距的改变而被移动时调用。如果正在编辑某个单元格,则停止编辑并重新绘制该单元格。

应用程序代码不显式地使用这些方法,它们由 JTable 在内部使用。

指定者:
接口 TableColumnModelListener 中的 columnMarginChanged
参数:
e - 接收到的事件
另请参见:
TableColumnModelListener

columnSelectionChanged

public void columnSelectionChanged(ListSelectionEvent e)
TableColumnModel 的选择模型更改时调用。

应用程序代码不显式地使用这些方法,它们由 JTable 在内部使用。

指定者:
接口 TableColumnModelListener 中的 columnSelectionChanged
参数:
e - 接收到的事件
另请参见:
TableColumnModelListener

valueChanged

public void valueChanged(ListSelectionEvent e)
行选择更改时调用,重新绘制来显示新的选择。

应用程序代码不显式地使用这些方法,它们由 JTable 在内部使用。

指定者:
接口 ListSelectionListener 中的 valueChanged
参数:
e - 接收到的事件
另请参见:
ListSelectionListener

editingStopped

public void editingStopped(ChangeEvent e)
编辑结束时调用。保存更改并丢弃编辑器。

应用程序代码不显式地使用这些方法,它们由 JTable 在内部使用。

指定者:
接口 CellEditorListener 中的 editingStopped
参数:
e - 接收到的事件
另请参见:
CellEditorListener

editingCanceled

public void editingCanceled(ChangeEvent e)
编辑取消时调用。丢弃编辑器对象,并再次呈现单元格。

应用程序代码不显式地使用这些方法,它们由 JTable 在内部使用。

指定者:
接口 CellEditorListener 中的 editingCanceled
参数:
e - 接收到的事件
另请参见:
CellEditorListener

setPreferredScrollableViewportSize

public void setPreferredScrollableViewportSize(Dimension size)
设置此表视口的首选大小。

参数:
size - 指定了 JViewport(其视图为此表)的 preferredSizeDimension 对象
另请参见:
Scrollable.getPreferredScrollableViewportSize()

getPreferredScrollableViewportSize

public Dimension getPreferredScrollableViewportSize()
返回此表视口 (viewport) 的首选大小。

指定者:
接口 Scrollable 中的 getPreferredScrollableViewportSize
返回:
包含 JViewport(它显示此表)的 preferredSizeDimension 对象
另请参见:
Scrollable.getPreferredScrollableViewportSize()

getScrollableUnitIncrement

public int getScrollableUnitIncrement(Rectangle visibleRect,
                                      int orientation,
                                      int direction)
返回完全公开了一个新行或新列(取决于方向)的滚动增量(以像素为单位)。

用户每次请求一个单位的滚动时,就调用此方法。

指定者:
接口 Scrollable 中的 getScrollableUnitIncrement
参数:
visibleRect - 视口中可见的视图区域
orientation - SwingConstants.VERTICALSwingConstants.HORIZONTAL
direction - 小于零向上/左滚动,大于零向下/右滚动
返回:
在指定方向滚动的“单位”增量
另请参见:
Scrollable.getScrollableUnitIncrement(java.awt.Rectangle, int, int)

getScrollableBlockIncrement

public int getScrollableBlockIncrement(Rectangle visibleRect,
                                       int orientation,
                                       int direction)
返回 visibleRect.heightvisibleRect.width,这取决于此表的方向。注意,从 Swing 1.1.1 (Java 2 v 1.2.2) 开始,返回的值将确保视口在行边界上完全对齐。

指定者:
接口 Scrollable 中的 getScrollableBlockIncrement
参数:
visibleRect - 视口内可见的视图区域
orientation - SwingConstants.VERTICAL 或 SwingConstants.HORIZONTAL。
direction - 小于零为向上/左滚动,大于零为向下/右滚动。
返回:
每个方向上的 visibleRect.heightvisibleRect.width
另请参见:
Scrollable.getScrollableBlockIncrement(java.awt.Rectangle, int, int)

getScrollableTracksViewportWidth

public boolean getScrollableTracksViewportWidth()
如果 autoResizeMode 设置为 AUTO_RESIZE_OFF,则返回 false,这指示表的宽度不是由视口的宽度所决定的。否则返回 true。

指定者:
接口 Scrollable 中的 getScrollableTracksViewportWidth
返回:
如果 autoResizeMode 设置为 AUTO_RESIZE_OFF,则返回 false;否则返回 true
另请参见:
Scrollable.getScrollableTracksViewportWidth()

getScrollableTracksViewportHeight

public boolean getScrollableTracksViewportHeight()
返回 false 指示表的高度不是由视口的高度所决定的。

指定者:
接口 Scrollable 中的 getScrollableTracksViewportHeight
返回:
false
另请参见:
Scrollable.getScrollableTracksViewportHeight()

processKeyBinding

protected boolean processKeyBinding(KeyStroke ks,
                                    KeyEvent e,
                                    int condition,
                                    boolean pressed)
从类 JComponent 复制的描述
调用此方法,以处理由于 KeyEvent e 而针对 ks 的键绑定。这会获得适当的 InputMap、获取绑定、从 ActionMap 获取操作,然后(如果找到该操作并且已启用该组件)调用 notifyAction 来通知该操作。

覆盖:
JComponent 中的 processKeyBinding
参数:
ks - 被查询的 KeyStroke
e - KeyEvent
condition - 为下列值之一:
  • JComponent.WHEN_FOCUSED
  • JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT
  • JComponent.WHEN_IN_FOCUSED_WINDOW
pressed - 如果键被按下,则为 true
返回:
如果有针对操作的绑定并且已启用该操作,则返回 true

createDefaultRenderers

protected void createDefaultRenderers()
为 object、number、double、date、boolean 和 icon 创建默认的单元格渲染器。

另请参见:
DefaultTableCellRenderer

createDefaultEditors

protected void createDefaultEditors()
为 object、number 和 boolean 值创建默认的单元格编辑器。

另请参见:
DefaultCellEditor

initializeLocalVars

protected void initializeLocalVars()
将表的属性初始化为其默认值。


createDefaultDataModel

protected TableModel createDefaultDataModel()
返回默认的表模型对象,它是一个 DefaultTableModel。子类可以重写此方法以返回不同的表模型对象。

返回:
默认的表模型对象
另请参见:
DefaultTableModel

createDefaultColumnModel

protected TableColumnModel createDefaultColumnModel()
返回默认的列模型对象,它是一个 DefaultTableColumnModel。子类可以重写此方法以返回不同的列模型对象。

返回:
默认的列模型对象
另请参见:
DefaultTableColumnModel

createDefaultSelectionModel

protected ListSelectionModel createDefaultSelectionModel()
返回默认的选择模型对象,它是一个 DefaultListSelectionModel。子类可以重写此方法以返回不同的选择模型对象。

返回:
默认的选择模型对象
另请参见:
DefaultListSelectionModel

createDefaultTableHeader

protected JTableHeader createDefaultTableHeader()
返回默认的表标题对象,它是一个 JTableHeader。子类可以重写此方法以返回不同的表标题对象。

返回:
默认的表标题对象
另请参见:
JTableHeader

resizeAndRepaint

protected void resizeAndRepaint()
等效于 revalidate 后跟 repaint


getCellEditor

public TableCellEditor getCellEditor()
返回单元格编辑器。

返回:
执行编辑任务的 TableCellEditor
另请参见:
cellEditor

setCellEditor

public void setCellEditor(TableCellEditor anEditor)
设置 cellEditor 变量。

参数:
anEditor - 执行编辑任务的 TableCellEditor
另请参见:
cellEditor

setEditingColumn

public void setEditingColumn(int aColumn)
设置 editingColumn 变量。

参数:
aColumn - 要编辑单元格的列
另请参见:
editingColumn

setEditingRow

public void setEditingRow(int aRow)
设置 editingRow 变量。

参数:
aRow - 要编辑单元格的行
另请参见:
editingRow

getCellRenderer

public TableCellRenderer getCellRenderer(int row,
                                         int column)
返回适于由行和列所指定单元格的渲染器。如果此列的 TableColumn 有一个非 null 的渲染器,则返回它。如果没有,则查找此列中的数据类(使用 getColumnClass),并返回此数据类型的默认渲染器。

注:在整个表的包中,内部实现始终使用此方法来提供渲染器,以便子类能够安全地重写此默认行为。

参数:
row - 要呈现的单元格所在行,其中第一行为 0
column - 要呈现的单元格所在列,其中第一列为 0
返回:
已分配的渲染器;如果为 null,则返回此对象类型的默认渲染器
另请参见:
DefaultTableCellRenderer, TableColumn.setCellRenderer(javax.swing.table.TableCellRenderer), setDefaultRenderer(java.lang.Class, javax.swing.table.TableCellRenderer)

prepareRenderer

public Component prepareRenderer(TableCellRenderer renderer,
                                 int row,
                                 int column)
通过查询 rowcolumn 处单元格值的数据模型和单元格选择状态来准备渲染器。返回事件所在的组件(可能是 ComponentJComponent)。

注:在整个表的包中,内部实现始终使用此方法来准备渲染器,以便子类能够安全地重写此默认行为。

参数:
renderer - 要准备的 TableCellRenderer
row - 要呈现的单元格所在行,其中第一行为 0
column - 要呈现的单元格所在列,其中第一列为 0
返回:
事件所在的 Component

getCellEditor

public TableCellEditor getCellEditor(int row,
                                     int column)
返回适于由 rowcolumn 所指定单元格的编辑器。如果此列的 TableColumn 有一个非 null 的编辑器,则返回它。如果没有,则查找此列中的数据类(使用 getColumnClass),并返回此数据类型的默认编辑器。

注:在整个表的包中,内部实现始终使用此方法来提供编辑器,以便子类能够安全地重写此默认行为。

参数:
row - 要编辑的单元格所在行,其中第一行为 0
column - 要编辑的单元格所在列,其中第一列为 0
返回:
此单元格的编辑器;如果为 null,则返回此单元格类型的默认编辑器
另请参见:
DefaultCellEditor

prepareEditor

public Component prepareEditor(TableCellEditor editor,
                               int row,
                               int column)
通过查询 rowcolumn 处单元格值的数据模型和单元格选择状态来准备编辑器。

注:在整个表的包中,内部实现始终使用此方法来准备编辑器,以便子类能够安全地重写此默认行为。

参数:
editor - 要设置的 TableCellEditor
row - 要编辑的单元格所在行,其中第一行为 0
column - 要编辑的单元格所在列,其中第一列为 0
返回:
正在被编辑的 Component

removeEditor

public void removeEditor()
丢弃编辑器对象并释放它用于单元格呈现的资源。


paramString

protected String paramString()
返回此表的字符串表示形式。此方法仅在进行调试的时候使用,对于各个实现,所返回字符串的内容和格式可能有所不同。返回的字符串可能为空,但不可能为 null

覆盖:
JComponent 中的 paramString
返回:
此表的字符串表示形式

print

public boolean print()
              throws PrinterException
一个便捷的方法,它显示一个打印对话框,然后以 PrintMode.FIT_WIDTH 模式打印此 JTable,不打印标题或脚注文本。打印期间将显示一个有模式的进度对话框(带有中止选项)。

注:在 headless 模式中不显示对话框。

返回:
除非用户取消了打印,否则返回 true
抛出:
PrinterException - 如果打印系统的错误导致打印作业中止
从以下版本开始:
1.5
另请参见:
print(JTable.PrintMode, MessageFormat, MessageFormat, boolean, PrintRequestAttributeSet, boolean), getPrintable(javax.swing.JTable.PrintMode, java.text.MessageFormat, java.text.MessageFormat)

print

public boolean print(JTable.PrintMode printMode)
              throws PrinterException
一个便捷的方法,它显示一个打印对话框,然后以给定的打印模式打印此 JTable,不打印标题或脚注文本。打印期间将显示一个有模式的进度对话框(带有中止选项)。

注:在 headless 模式中不显示对话框。

参数:
printMode - printable 应使用的打印模式
返回:
除非用户取消了打印,否则返回 true
抛出:
PrinterException - 如果打印系统的错误导致打印作业中止
从以下版本开始:
1.5
另请参见:
print(JTable.PrintMode, MessageFormat, MessageFormat, boolean, PrintRequestAttributeSet, boolean), getPrintable(javax.swing.JTable.PrintMode, java.text.MessageFormat, java.text.MessageFormat)

print

public boolean print(JTable.PrintMode printMode,
                     MessageFormat headerFormat,
                     MessageFormat footerFormat)
              throws PrinterException
一个便捷的方法,它显示一个打印对话框,然后以给定的打印模式打印此 JTable,打印指定的标题和脚注文本。打印期间将显示一个有模式的进度对话框(带有中止选项)。

注:在 headless 模式中不显示对话框。

参数:
printMode - printable 应使用的打印模式
headerFormat - 指定在打印标题中所用文本的 MessageFormat,如果没有则为 null
footerFormat - 指定在打印脚注中所用文本的 MessageFormat,如果没有则为 null
返回:
除非用户取消了打印,否则返回 true
抛出:
PrinterException - 如果打印系统的错误导致打印作业中止
从以下版本开始:
1.5
另请参见:
print(JTable.PrintMode, MessageFormat, MessageFormat, boolean, PrintRequestAttributeSet, boolean), getPrintable(javax.swing.JTable.PrintMode, java.text.MessageFormat, java.text.MessageFormat)

print

public boolean print(JTable.PrintMode printMode,
                     MessageFormat headerFormat,
                     MessageFormat footerFormat,
                     boolean showPrintDialog,
                     PrintRequestAttributeSet attr,
                     boolean interactive)
              throws PrinterException,
                     HeadlessException
打印此 JTable。按照大多数开发人员将要采取的步骤来打印 JTable。简单地说,它准备表,调用 getPrintable 来获取合适的 Printable,然后将其发送到打印机。

boolean 参数允许指定是否向用户显示打印对话框。显示打印对话框时,用户可以使用该对话框更改打印属性,甚至可以取消打印。另一个参数允许直接指定打印属性。这可以用来提供打印对话框的初始值,或者在未显示对话框时提供任何所需的属性。

第二个 boolean 参数允许指定是否以交互模式执行打印。如果为 true,则在打印期间将显示一个有模式的进度对话框(带有中止选项)。此对话框还可防止任何可能影响表的用户操作。但是,它不能防止代码对表的修改(例如,另一个线程使用 SwingUtilities.invokeLater 发送更新)。因此,开发人员要负责确保在打印期间其他代码不以任何方式修改表(无效的修改包括在大小、渲染器或基础数据方面的修改)。如果在打印期间更改了表,则会产生不明确的打印行为。

如果将此参数指定为 false,则不显示对话框,打印将立即在事件指派进程上开始。在打印完成前,这将阻断任何其他事件的处理(包括重新绘制)。尽管这有效地防止了对表的更改,但用户使用起来不是很方便。出于这个原因,仅在从一个没有可视 GUI 的应用程序打印时才推荐指定 false

注:在 headless 模式下,试图显示打印对话框或交互运行将导致 HeadlessException

获取 printable 前,此方法准备表以便获取最需要的打印结果。如果该表当前处于编辑模式中,则它将尽可能正常地终止编辑。它还确保在打印输出中不指示该表的当前选择和聚焦的单元格。这是在视图级进行处理的,并且只适用于打印期间,因此不需要向选择模型发送通知。

有关如何打印表的进一步描述,请参见 getPrintable(javax.swing.JTable.PrintMode, java.text.MessageFormat, java.text.MessageFormat)

参数:
printMode - printable 应使用的打印模式
headerFormat - 指定在打印标题中所用文本的 MessageFormat,如果没有则为 null
footerFormat - 指定在打印脚注中所用文本的 MessageFormat,如果没有则为 null
showPrintDialog - 是否显示打印对话框
attr - 指定任何打印属性的 PrintRequestAttributeSet,如果没有则为 null
interactive - 是否以交互模式打印
返回:
除非用户取消了打印,否则返回 true
抛出:
PrinterException - 如果打印系统的错误导致打印作业中止
HeadlessException - 如果要求方法显示打印对话框或交互运行,并且 GraphicsEnvironment.isHeadless 返回 true
从以下版本开始:
1.5
另请参见:
getPrintable(javax.swing.JTable.PrintMode, java.text.MessageFormat, java.text.MessageFormat), GraphicsEnvironment.isHeadless()

getPrintable

public Printable getPrintable(JTable.PrintMode printMode,
                              MessageFormat headerFormat,
                              MessageFormat footerFormat)
返回打印此 JTable 中所使用的 Printable

可以在两种打印模式的任意一个内请求 Printable。在这两种模式中,它按顺序自然地将表的各行分散到多页中,每页放入尽可能多的行。PrintMode.NORMAL 指定表以当前大小打印。在此模式中,可能需要以类似于行的方式将列分散到多页中。需要这样分散时,列以与表的 ComponentOrientation 一致的顺序进行分布。PrintMode.FIT_WIDTH 指定了按比例缩小输出(如有必要),以在每页上放入表的整个宽度(因此可放入所有列)。宽度和高度按比例进行缩放,以保持输出的高宽比。

Printable 将该表 JTableHeader(如果有的话)的合适部分作为每页上表部分的标题。

可以通过提供 MessageFormat 参数将标题和脚注文本添加到输出中。打印代码根据格式请求 String,提供可能包括在已格式化字符串中的单个项:表示当前页码的 Integer

当某些字符(例如单引号)是特殊字符并需要转义处理时,鼓励阅读 MessageFormat 的文档。

以下示例创建一个可用来打印 "Duke's Table Page - " 和当前页码的 MessageFormat

     // notice the escaping of the single quote
     // notice how the page number is included with "{0}"
     MessageFormat format = new MessageFormat("Duke''s Table: Page - {0}");
 

Printable 限制向每页的可打印区域绘制的内容。在某些情况下,可能看到该区域不可能放入所有页的内容。在这些情形下,可以截取输出,但实现将采取一些合理的行为。以下是几种已知会发生的情况,以及如何通过此特定实现来处理它们:

将此 Printable 包装到另一个 Printable 中是完全有效的,这可以用来创建复杂的报告和文档。甚至可以请求将不同的页呈现到不同大小的可打印区域中。必须准备好让实现处理此问题(可能通过其布局计算动态完成)。但是,当必须跨页分散列时,为每页提供不同的高度可能无法与 PrintMode.NORMAL 正常工作。

重要的是要注意此 Printable 使用表的当前渲染器,在其当前可视状态下打印表。调用此方法,您可能需要首先 修改表的状态(例如更改渲染器、取消编辑或隐藏选择)。

但是,在获取此 Printable 之后,不能以任何方式修改表(无效的修改包括在大小、渲染器或基础数据方面的修改)。一旦更改了该表,则返回的 Printable 的行为是不明确的。

以下是一个调用此方法来获取 Printable 的示例,它显示了跨平台的打印对话框,然后打印 Printable,除非用户取消对话框:

     // prepare the table for printing here first (for example, hide selection)

     // wrap in a try/finally so table can be restored even if something fails
     try {
         // fetch the printable
         Printable printable = table.getPrintable(JTable.PrintMode.FIT_WIDTH,
                                                  new MessageFormat("My Table"),
                                                  new MessageFormat("Page - {0}"));

         // fetch a PrinterJob
         PrinterJob job = PrinterJob.getPrinterJob();

         // set the Printable on the PrinterJob
         job.setPrintable(printable);

         // create an attribute set to store attributes from the print dialog
         PrintRequestAttributeSet attr = new HashPrintRequestAttributeSet();

         // display a print dialog and record whether or not the user cancels it
         boolean printAccepted = job.printDialog(attr);

         // if the user didn't cancel the dialog
         if (printAccepted) {
             // do the printing (may need to handle PrinterException)
             job.print(attr);
         }
     } finally {
         // restore the original table state here (for example, restore selection)
     }
 

参数:
printMode - printable 应使用的打印模式
headerFormat - 指定在打印标题中所用文本的 MessageFormat,如果没有则为 null
footerFormat - 指定在打印脚注中所用文本的 MessageFormat,如果没有则为 null
返回:
用于打印此 JTable 的 Printable
从以下版本开始:
1.5
另请参见:
Printable, PrinterJob

getAccessibleContext

public AccessibleContext getAccessibleContext()
获取与此 JTable 关联的 AccessibleContext。对于表,AccessibleContext 采用 AccessibleJTable 的形式。如有必要,可创建一个新的 AccessibleJTable 实例。

指定者:
接口 Accessible 中的 getAccessibleContext
覆盖:
JComponent 中的 getAccessibleContext
返回:
一个 AccessibleJTable,它充当此 JTable 的 AccessibleContext

JavaTM 2 Platform
Standard Ed. 5.0

提交错误或意见
有关更多的 API 参考资料和开发人员文档,请参阅 Java 2 SDK SE 开发人员文档。该文档包含更详细的、面向开发人员的描述,以及总体概述、术语定义、使用技巧和工作代码示例。

版权所有 2004 Sun Microsystems, Inc. 保留所有权利。 请遵守许可证条款。另请参阅文档重新分发政策