JavaTM Platform
Standard Ed. 6

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, RowSorterListener, TableColumnModelListener, TableModelListener, Scrollable

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

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() 获取并单独显示它。

要启用行的排序和过滤,请使用 RowSorter。可以通过以下两种方式之一设置一个行排序器。

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

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

JTable 使用专有的整数来引用它所显示的模型的行和列。JTable 采用表格的单元格范围,并在绘制时使用 getValueAt(int, int) 从模型中获取值。务必记住各种 JTable 方法所返回的列和行索引是就 JTable(视图)而言的,不一定是模型所使用的那些索引。

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

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

类似地,使用 RowSorter 提供的排序和过滤功能时,底层 TableModel 不需要知道怎样进行排序,RowSorter 将处理它。对底层 TableModel 使用 JTable 的基于行的方法时,必须进行坐标转换。所有基于 JTable 行的方法都是就 RowSorter 而言的,不一定与底层 TableModel 的方法相同。例如,选择始终是就 JTable 而言的,因此使用 RowSorter 时,需要使用 convertRowIndexToViewconvertRowIndexToModel 进行转换。以下代码显示了如何将 JTable 的坐标转换为底层模型的坐标:

   int[] selection = table.getSelectedRows();
   for (int i = 0; i < selection.length; i++) {
     selection[i] = table.convertRowIndexToModel(selection[i]);
   }
   // selection is now in terms of the underlying TableModel
 

默认情况下,如果启用排序,那么排序时 JTable 将保留基于模型的选择和可变行高度。例如,如果当前选择行 0(就底层模型而言),那么排序之后将选择行 0(就底层模型而言)。选择有可能看起来被更改了,但就底层模型而言它仍然保持不变。模型索引不再可见或者被移除时除外。例如,如果行 0 被过滤掉了,那么选择在排序后将为空。

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

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

警告:Swing 不是线程安全的。有关更多信息,请参阅 Swing's Threading Policy

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

另请参见:
DefaultTableModel, TableRowSorter

嵌套类摘要
protected  class JTable.AccessibleJTable
          此类实现对 JTable 类的可访问性支持。
static class JTable.DropLocation
          TransferHandler.DropLocation 的一个子类,表示 JTable 的放置位置 (drop location)。
static class JTable.PrintMode
          用于打印 JTable 的打印模式。
 
从类 javax.swing.JComponent 继承的嵌套类/接口
JComponent.AccessibleJComponent
 
从类 java.awt.Container 继承的嵌套类/接口
Container.AccessibleAWTContainer
 
从类 java.awt.Component 继承的嵌套类/接口
Component.AccessibleAWTComponent, Component.BaselineResizeBehavior, 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 平台 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 来显示 Vector 所组成的 Vector 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 的列索引映射到视图中的列索引。
 int convertRowIndexToModel(int viewRowIndex)
          将基于视图的行索引映射到底层 TableModel
 int convertRowIndexToView(int modelRowIndex)
          将基于 TableModel 的行索引映射到该视图。
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()
          确定表是否要根据模型创建默认的列。
 boolean getAutoCreateRowSorter()
          如果每当模型更改时,都应该创建一个新 RowSorter 并作为该表的排序器安装,则返回 true;否则,返回 false
 int getAutoResizeMode()
          返回表的自动调整模式。
 TableCellEditor getCellEditor()
          返回活动单元格编辑器;如果该表当前没有被编辑,则返回 null
 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()
          返回是否启用自动拖动处理。
 JTable.DropLocation getDropLocation()
          返回对组件的 DnD 操作期间此组件应该可见地指示为放置位置的位置;如果当前没有显示任何位置,则返回 null
 DropMode getDropMode()
          返回此组件的放置模式。
 int getEditingColumn()
          返回包含当前被编辑的单元格的列索引。
 int getEditingRow()
          返回包含当前被编辑的单元格的行索引。
 Component getEditorComponent()
          返回处理编辑会话的组件。
 boolean getFillsViewportHeight()
          返回此表是否始终大到足以填充封闭视口的高度。
 Color getGridColor()
          返回用来绘制网格线的颜色。
 Dimension getIntercellSpacing()
          返回单元格之间的水平间距和垂直间距。
 TableModel getModel()
          返回提供此 JTable 所显示数据的 TableModel
 Dimension getPreferredScrollableViewportSize()
          返回此表视口的首选大小。
 Printable getPrintable(JTable.PrintMode printMode, MessageFormat headerFormat, MessageFormat footerFormat)
          返回打印此 JTable 中所使用的 Printable
 int getRowCount()
          返回 JTable 中可以显示的行数(给定无限空间)。
 int getRowHeight()
          返回表的行高,以像素为单位。
 int getRowHeight(int row)
          返回 row 中单元格的高度,以像素为单位。
 int getRowMargin()
          获取单元格之间的间距,以像素为单位。
 boolean getRowSelectionAllowed()
          如果可以选择行,则返回 true。
 RowSorter<? extends TableModel> getRowSorter()
          返回负责排序的对象。
 int getScrollableBlockIncrement(Rectangle visibleRect, int orientation, int direction)
          返回 visibleRect.heightvisibleRect.width,这取决于此表的方向。
 boolean getScrollableTracksViewportHeight()
          返回 false 指示表的高度不是由视口的高度决定的,除非 getFillsViewportHeighttrue 并且该表的首选高度小于视口的高度。
 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 类名称的后缀。
 boolean getUpdateSelectionOnSort()
          如果排序后应该更新选择,则返回 true。
 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)
          根据完全功能 print 方法的指定打印此表,将默认打印机指定为打印服务。
 boolean print(JTable.PrintMode printMode, MessageFormat headerFormat, MessageFormat footerFormat, boolean showPrintDialog, PrintRequestAttributeSet attr, boolean interactive, PrintService service)
          打印此 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 setAutoCreateRowSorter(boolean autoCreateRowSorter)
          指定其模型更改时是否应该为表创建一个 RowSorter
 void setAutoResizeMode(int mode)
          当调整表的大小时,设置表的自动调整模式。
 void setCellEditor(TableCellEditor anEditor)
          设置活动单元格编辑器。
 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)
          打开或关闭自动拖动处理。
 void setDropMode(DropMode dropMode)
          设置此组件的放置模式。
 void setEditingColumn(int aColumn)
          设置 editingColumn 变量。
 void setEditingRow(int aRow)
          设置 editingRow 变量。
 void setFillsViewportHeight(boolean fillsViewportHeight)
          设置此表是否始终大到足以填充封闭视口的高度。
 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 setRowSorter(RowSorter<? extends TableModel> sorter)
          设置 RowSorter
 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 setUpdateSelectionOnSort(boolean update)
          指定排序后是否应该更新选择。
 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 平台 v1.4 开始已过时。
 void sorterChanged(RowSorterEvent e)
          RowSorter 以某种方式发生了更改的 RowSorterListener 通知。
 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, getBaseline, getBaselineResizeBehavior, 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, isPaintingForPrint, 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 平台 v1.3 开始已过时。请使用 rowSelectionAllowed 属性和 columnModelcolumnSelectionAllowed 属性,或者使用方法 getCellSelectionEnabled


editorComp

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


cellEditor

protected transient TableCellEditor cellEditor
活动单元格编辑器对象,它重写当前单元格占用的屏幕空间,并允许用户更改其内容。如果当前没有编辑该表,则为 null


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 中各列的合适 TableColumn 来填充列模型。

参数:
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 来显示 Vector 所组成的 Vector rowData 中的值,其列名称为 columnNamesrowData 中包含的 Vector 应该包含该行的值。换句话说,可以通过以下代码获取第 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 方法调用此方法,此方法是受保护的,以便子类可以重写此默认的卸载过程。

从以下版本开始:
1.3
另请参见:
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
从以下版本开始:
1.3

getRowHeight

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

参数:
row - 要返回其高度的行
返回:
行中单元格的高度,以像素为单位
从以下版本开始:
1.3

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)
打开或关闭自动拖动处理。要启用自动拖动处理,应该将此属性设置为 true,并且该表的 TransferHandler 需要为非 nulldragEnabled 属性的默认值为 false

遵守此属性并识别用户拖动动作的作业取决于外观实现,尤其是表的 TableUI。当启用自动拖动处理时,只要用户在项(单个选择模式中)或选择(其他选择模式中)上按下鼠标按键,并将鼠标移动几个像素,多数外观(包括子类化 BasicLookAndFeel 的外观)就会开始拖放操作。因此,将此属性设置为 true 可以对选择行为产生微妙的影响。

如果使用一个忽略此属性的外观,仍然可以通过在表的 TransferHandler 上调用 exportAsDrag 开始拖放操作。

参数:
b - 是否启用自动拖动处理
抛出:
HeadlessException - 如果 btrue,并且 GraphicsEnvironment.isHeadless() 返回 true
从以下版本开始:
1.4
另请参见:
GraphicsEnvironment.isHeadless(), getDragEnabled(), JComponent.setTransferHandler(javax.swing.TransferHandler), TransferHandler

getDragEnabled

public boolean getDragEnabled()
返回是否启用自动拖动处理。

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

setDropMode

public final void setDropMode(DropMode dropMode)
设置此组件的放置模式。为了向后兼容性,此属性的默认值为 DropMode.USE_SELECTION。 但是,为了用户使用更加方便,建议使用其他某个模式。例如,DropMode.ON 提供与选择类似的显示项的行为,但执行此操作不会影响表中的实际选择。

JTable 支持以下放置模式:

只有此组件具有接受放置操作的 TransferHandler 时,放置模式才有意义。

参数:
dropMode - 要使用的放置模式
抛出:
IllegalArgumentException - 如果放置模式不受支持或为 null
从以下版本开始:
1.6
另请参见:
getDropMode(), getDropLocation(), JComponent.setTransferHandler(javax.swing.TransferHandler), TransferHandler

getDropMode

public final DropMode getDropMode()
返回此组件的放置模式。

返回:
此组件的放置模式
从以下版本开始:
1.6
另请参见:
setDropMode(javax.swing.DropMode)

getDropLocation

public final JTable.DropLocation getDropLocation()
返回对组件的 DnD 操作期间此组件应该可见地指示为放置位置的位置;如果当前没有显示任何位置,则返回 null

此方法不用于从 TransferHandler 查询放置操作,因为放置操作只在 TransferHandlercanImport 已经返回并允许显示该位置之后才会被设置。

当此属性更改时,组件将触发名为 "dropLocation" 的属性更改事件。

返回:
放置位置
从以下版本开始:
1.6
另请参见:
setDropMode(javax.swing.DropMode), TransferHandler.canImport(TransferHandler.TransferSupport)

setAutoCreateRowSorter

public void setAutoCreateRowSorter(boolean autoCreateRowSorter)
指定其模型更改时是否应该为表创建一个 RowSorter

当调用 setAutoCreateRowSorter(true) 时,立即创建一个 TableRowSorter 并安装在表上。autoCreateRowSorter 属性保持为 true 时,每次模型更改都会创建一个新的 TableRowSorter 并将其设置为表的行排序器。

参数:
autoCreateRowSorter - 是否应该自动创建 RowSorter
从以下版本开始:
1.6
另请参见:
TableRowSorter

getAutoCreateRowSorter

public boolean getAutoCreateRowSorter()
如果每当模型更改时,都应该创建一个新 RowSorter 并作为该表的排序器安装,则返回 true;否则,返回 false

返回:
如果模型更改时应该创建一个 RowSorter,则返回 true
从以下版本开始:
1.6

setUpdateSelectionOnSort

public void setUpdateSelectionOnSort(boolean update)
指定排序后是否应该更新选择。如果为 true,排序时选择将被重置,从而仍然选择相同的行(就模型而言)。默认值为 true。

参数:
update - 在排序时是否应该更新选择
从以下版本开始:
1.6

getUpdateSelectionOnSort

public boolean getUpdateSelectionOnSort()
如果排序后应该更新选择,则返回 true。

返回:
是否应该更新排序的选择
从以下版本开始:
1.6

setRowSorter

public void setRowSorter(RowSorter<? extends TableModel> sorter)
设置 RowSorterRowSorter 用于提供对 JTable 的排序和过滤。

此方法清除该选择并重置所有可变行高度。

如果 RowSorter 的底层模型不同于此 JTable 的底层模型,则将导致不确定的行为。

参数:
sorter - RowSorternull 表示关闭排序
从以下版本开始:
1.6
另请参见:
TableRowSorter

getRowSorter

public RowSorter<? extends TableModel> getRowSorter()
返回负责排序的对象。

返回:
负责排序的对象
从以下版本开始:
1.6

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 需要的功能可能多于此方法所提供的功能(例如在操作非连续选择的前端时),而且对某些选择更改可能不会调用到此方法中。

此实现使用以下约定:

参数:
rowIndex - 影响 row 的选择
columnIndex - 影响 column 的选择
toggle - 参见上面的描述
extend - 如果为 true,则扩展当前的选择
从以下版本开始:
1.3

getSelectionForeground

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

返回:
前景属性的 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 绑定属性。

参数:
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)

convertRowIndexToView

public int convertRowIndexToView(int modelRowIndex)
将基于 TableModel 的行索引映射到该视图。如果模型的内容没有进行排序,则模型和视图的索引相同。

参数:
modelRowIndex - 基于模型的行索引
返回:
视图中对应行的索引;如果该行不可见,则返回 -1
抛出:
IndexOutOfBoundsException - 如果启用排序并传递 TableModel 的行数范围之外的索引
从以下版本开始:
1.6
另请参见:
TableRowSorter

convertRowIndexToModel

public int convertRowIndexToModel(int viewRowIndex)
将基于视图的行索引映射到底层 TableModel。如果模型的内容没有进行排序,则模型和视图的索引相同。

参数:
viewRowIndex - 视图中行的索引
返回:
模型中对应行的索引
抛出:
IndexOutOfBoundsException - 如果启用排序并传递 JTable 范围(由 getRowCount 方法确定)之外的索引
从以下版本开始:
1.6
另请参见:
TableRowSorter, getRowCount()

getRowCount

public int getRowCount()
返回 JTable 中可以显示的行数(给定无限空间)。如果已指定一个带有过滤器的 RowSorter,则返回的行数可能与底层 TableModel 的行数不同。

返回:
JTable 中显示的行数
另请参见:
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 处单元格的矩形
另请参见:
getIntercellSpacing()

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

概述

将 r 中各元素的目标大小与首选大小总和之间的差值称为 "DELTA"。单独的大小通过将原始首选大小加上 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 平台 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
从以下版本开始:
1.4
另请参见:
getSurrendersFocusOnKeystroke()

getSurrendersFocusOnKeystroke

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

返回:
如果在键击导致编辑器被激活时编辑器应该获得焦点,则返回 true
从以下版本开始:
1.4
另请参见:
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 平台 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)

sorterChanged

public void sorterChanged(RowSorterEvent e)
RowSorter 以某种方式发生了更改的 RowSorterListener 通知。

指定者:
接口 RowSorterListener 中的 sorterChanged
参数:
e - 描述更改的 RowSorterEvent
抛出:
NullPointerException - 如果 enull
从以下版本开始:
1.6

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()
返回此表视口的首选大小。

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

getScrollableUnitIncrement

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

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

指定者:
接口 Scrollable 中的 getScrollableUnitIncrement
参数:
visibleRect - 视口中可见的视图区域
orientation - SwingConstants.VERTICALSwingConstants.HORIZONTAL
direction - 小于 0 向上/左滚动,大于 0 向下/右滚动
返回:
在指定方向滚动的“单位”增量
另请参见:
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 - 小于 0 为向上/左滚动,大于 0 为向下/右滚动。
返回:
每个方向上的 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 指示表的高度不是由视口的高度决定的,除非 getFillsViewportHeighttrue 并且该表的首选高度小于视口的高度。

指定者:
接口 Scrollable 中的 getScrollableTracksViewportHeight
返回:
false,除非 getFillsViewportHeighttrue 并且需要延伸该表以填充视口
另请参见:
Scrollable.getScrollableTracksViewportHeight(), setFillsViewportHeight(boolean), getFillsViewportHeight()

setFillsViewportHeight

public void setFillsViewportHeight(boolean fillsViewportHeight)
设置此表是否始终大到足以填充封闭视口的高度。如果该表的首选高度小于视口,则将会延伸该表以填充视口。换句话说,此方法确保该表永远不会小于该视口。此属性的默认值为 false

参数:
fillsViewportHeight - 此表是否始终大到足以填充封闭视口的高度
从以下版本开始:
1.6
另请参见:
getFillsViewportHeight(), getScrollableTracksViewportHeight()

getFillsViewportHeight

public boolean getFillsViewportHeight()
返回此表是否始终大到足以填充封闭视口的高度。

返回:
此表是否始终大到足以填充封闭视口的高度
从以下版本开始:
1.6
另请参见:
setFillsViewportHeight(boolean)

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()
返回活动单元格编辑器;如果该表当前没有被编辑,则返回 null

返回:
执行编辑操作的 TableCellEditor;如果该表当前没有被编辑,则返回 null
另请参见:
cellEditor, getCellEditor(int, int)

setCellEditor

public void setCellEditor(TableCellEditor anEditor)
设置活动单元格编辑器。

参数:
anEditor - 活动单元格编辑器
另请参见:
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)。

打印操作期间,此方法将配置不指示选择和焦点的渲染器,以防止它们出现在打印输出中。要执行基于该表是否打印的其他定制,可以检查 JComponent.isPaintingForPrint() 的值(在此处或者在自定义渲染器中)。

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

参数:
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
抛出:
SecurityException - 如果不允许此线程启动打印作业请求
PrinterException - 如果打印系统的错误导致打印作业中止
从以下版本开始:
1.5
另请参见:
print(JTable.PrintMode, MessageFormat, MessageFormat, boolean, PrintRequestAttributeSet, boolean, PrintService), 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
抛出:
SecurityException - 如果不允许此线程启动打印作业请求
PrinterException - 如果打印系统的错误导致打印作业中止
从以下版本开始:
1.5
另请参见:
print(JTable.PrintMode, MessageFormat, MessageFormat, boolean, PrintRequestAttributeSet, boolean, PrintService), 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
抛出:
SecurityException - 如果不允许此线程启动打印作业请求
PrinterException - 如果打印系统的错误导致打印作业中止
从以下版本开始:
1.5
另请参见:
print(JTable.PrintMode, MessageFormat, MessageFormat, boolean, PrintRequestAttributeSet, boolean, PrintService), 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
根据完全功能 print 方法的指定打印此表,将默认打印机指定为打印服务。

参数:
printMode - printable 应该使用的打印模式
headerFormat - 指定在打印标题中所用文本的 MessageFormat,如果没有则为 null
footerFormat - 指定在打印脚注中所用文本的 MessageFormat,如果没有则为 null
showPrintDialog - 是否显示打印对话框
attr - 指定所有打印属性的 PrintRequestAttributeSet,如果没有则为 null
interactive - 是否以交互模式打印
返回:
true,除非用户取消了打印
抛出:
HeadlessException - 如果要求方法显示打印对话框或交互运行,并且 GraphicsEnvironment.isHeadless 返回 true
SecurityException - 如果不允许此线程启动打印作业请求
PrinterException - 如果打印系统的错误导致打印作业中止
从以下版本开始:
1.5
另请参见:
print(JTable.PrintMode, MessageFormat, MessageFormat, boolean, PrintRequestAttributeSet, boolean, PrintService), 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,
                     PrintService service)
              throws PrinterException,
                     HeadlessException
打印此 JTable。按照大多数开发人员所采取的步骤来打印 JTable。简单地说,它准备表,调用 getPrintable 来获取合适的 Printable,然后将其发送到打印机。

boolean 参数允许指定是否向用户显示打印对话框。显示打印对话框时,用户可以使用该对话框更改目标打印机或打印属性,甚至可以取消打印。另外两个参数允许指定 PrintService 和打印属性。这些参数可以用来提供打印对话框的初始值,或者在未显示对话框时指定值。

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

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

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

获取 printable 前,此方法将会正常地终止编辑(如有必要),以防止编辑器在打印结果中显示。此外,JTable 在未指示选择和焦点的打印期间将准备好其渲染器。至于定制打印输出中表的外观的更多信息,开发人员可以提供自定义渲染器或者条件化 JComponent.isPaintingForPrint() 值的绘制模式。

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

参数:
printMode - printable 应使用的打印模式
headerFormat - 指定在打印标题中所用文本的 MessageFormat,如果没有则为 null
footerFormat - 指定在打印脚注中所用文本的 MessageFormat,如果没有则为 null
showPrintDialog - 是否显示打印对话框
attr - 指定任何打印属性的 PrintRequestAttributeSet,如果没有则为 null
interactive - 是否以交互模式打印
service - 目标 PrintService,或者为 null,表示使用默认打印机
返回:
除非用户取消了打印,否则返回 true
抛出:
HeadlessException - 如果要求方法显示打印对话框或交互运行,并且 GraphicsEnvironment.isHeadless 返回 true
SecurityException - 如果安全管理器存在并且其 SecurityManager.checkPrintJobAccess() 方法不允许此线程创建打印作业请求
PrinterException - 如果打印系统的错误导致打印作业中止
从以下版本开始:
1.6
另请参见:
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

此方法用于希望定制 JTableprint 方法所使用的默认 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 正常工作。

至于定制打印结果中表的外观的信息,JTable 自身将在打印期间负责隐藏选择和焦点。对于其他定制,用户的渲染器或绘制模式可以定制基于 JComponent.isPaintingForPrint() 值的外观。

此外,调用此方法之前,可以首先 修改该表的状态,例如取消单元编辑或者让用户恰当地调整表的大小。但是,在获取此 Printable 之后,不得再修改该表的状态(无效的修改包括在大小或底层数据方面的修改)。如果更改了该表,返回 Printable 的行为将是不确定的。

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

getAccessibleContext

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

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

JavaTM Platform
Standard Ed. 6

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

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