|
JavaTM 2 Platform Standard Ed. 5.0 |
|||||||||
上一个类 下一个类 | 框架 无框架 | |||||||||
摘要: 嵌套 | 字段 | 构造方法 | 方法 | 详细信息: 字段 | 构造方法 | 方法 |
java.lang.Object java.awt.Component java.awt.Container javax.swing.JComponent javax.swing.JTable
public class JTable
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
由包含多个 Object
的 Vector
组成。除了将数据从应用程序复制到 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
类,可以使用 InputMap
和 ActionMap
将 Action
对象与 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 ,用来显示 Vectors 的 Vector (rowData ) 中的值,其列名称为 columnNames 。 |
方法摘要 | |
---|---|
void |
addColumn(TableColumn aColumn)
将 aColumn 追加到此 JTable 的列模型所保持的列数组的结尾。 |
void |
addColumnSelectionInterval(int index0,
int index1)
将从 index0 到 index1 (包含)之间的列添加到当前选择中。 |
void |
addNotify()
调用 configureEnclosingScrollPane 方法。 |
void |
addRowSelectionInterval(int index0,
int index1)
将从 index0 到 index1 (包含)之间的行添加到当前选择中。 |
void |
changeSelection(int rowIndex,
int columnIndex,
boolean toggle,
boolean extend)
根据以下两个标志的状态,更新表的选择模型: toggle 和 extend 。 |
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 是一个封闭 JScrollPane 的 viewportView (通常情况如此),那么可通过安装表的 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)
如果 row 和 column 位置的索引在有效范围内,并且这些索引处的单元格是可编辑的,则以编程方式启动该位置单元格的编辑。 |
boolean |
editCellAt(int row,
int column,
EventObject e)
如果 row 和 column 位置的索引在有效范围内,并且这些索引处的单元格是可编辑的,则以编程方式启动该位置单元格的编辑。 |
void |
editingCanceled(ChangeEvent e)
编辑取消时调用。 |
void |
editingStopped(ChangeEvent e)
编辑结束时调用。 |
AccessibleContext |
getAccessibleContext()
获取与此 JTable 关联的 AccessibleContext。 |
boolean |
getAutoCreateColumnsFromModel()
确定表是否要根据模型创建默认的列。 |
int |
getAutoResizeMode()
返回表的自动调整模式。 |
TableCellEditor |
getCellEditor()
返回单元格编辑器。 |
TableCellEditor |
getCellEditor(int row,
int column)
返回适于由 row 和 column 所指定单元格的编辑器。 |
Rectangle |
getCellRect(int row,
int column,
boolean includeSpacing)
返回位于 row 和 column 相交位置的单元格矩形。 |
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.height 或 visibleRect.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)
重写 JComponent 的 getToolTipText 方法,从而允许使用渲染器的提示(如果设置了文本)。 |
TableUI |
getUI()
返回呈现此组件的 L&F 对象。 |
String |
getUIClassID()
返回用于构造呈现此组件时使用的 L&F 类名称的后缀。 |
Object |
getValueAt(int row,
int column)
返回 row 和 column 位置的单元格值。 |
protected void |
initializeLocalVars()
将表的属性初始化为其默认值。 |
boolean |
isCellEditable(int row,
int column)
如果 row 和 column 位置的单元格是可编辑的,则返回 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)
通过查询 row 、column 处单元格值的数据模型和单元格选择状态来准备编辑器。 |
Component |
prepareRenderer(TableCellRenderer renderer,
int row,
int column)
通过查询 row 、column 处单元格值的数据模型和单元格选择状态来准备渲染器。 |
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)
取消选中从 index0 到 index1 (包括)的列。 |
void |
removeEditor()
丢弃编辑器对象并释放它用于单元格呈现的资源。 |
void |
removeNotify()
调用 unconfigureEnclosingScrollPane 方法。 |
void |
removeRowSelectionInterval(int index0,
int index1)
取消选中从 index0 到 index1 (包括)的行。 |
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)
选择从 index0 到 index1 (包含)之间的列。 |
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)
将 rowMargin 和 columnMargin (单元格之间间距的高度和宽度)设置为 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)
选择从 index0 到 index1 (包含)之间的行。 |
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)
设置表模型中 row 和 column 位置的单元格值。 |
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)
行选择更改时调用,重新绘制来显示新的选择。 |
从类 java.lang.Object 继承的方法 |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait |
字段详细信息 |
---|
public static final int AUTO_RESIZE_OFF
public static final int AUTO_RESIZE_NEXT_COLUMN
public static final int AUTO_RESIZE_SUBSEQUENT_COLUMNS
public static final int AUTO_RESIZE_LAST_COLUMN
public static final int AUTO_RESIZE_ALL_COLUMNS
protected TableModel dataModel
TableModel
。
protected TableColumnModel columnModel
TableColumnModel
。
protected ListSelectionModel selectionModel
ListSelectionModel
,用来保持对行选择的跟踪。
protected JTableHeader tableHeader
TableHeader
。
protected int rowHeight
protected int rowMargin
protected Color gridColor
protected boolean showHorizontalLines
showHorizontalLines
为 true,则表在单元格之间绘制水平行。
protected boolean showVerticalLines
showVerticalLines
为 true,则表在单元格之间绘制垂直行。
protected int autoResizeMode
protected boolean autoCreateColumnsFromModel
TableModel
进行查询以构建默认的列集。
protected Dimension preferredViewportSize
Scrollable
接口使用它来确定初始的可见区域。
protected boolean rowSelectionAllowed
protected boolean cellSelectionEnabled
rowSelectionAllowed
属性和 columnModel
的 columnSelectionAllowed
属性。或者使用方法 getCellSelectionEnabled
。
protected transient Component editorComp
Component
。
protected transient TableCellEditor cellEditor
protected transient int editingColumn
protected transient int editingRow
protected transient Hashtable defaultRenderersByColumnClass
TableModel
接口的 getColumnClass
中所声明的类建立索引。
protected transient Hashtable defaultEditorsByColumnClass
TableModel
接口的 getColumnClass
中所声明的类建立索引。
protected Color selectionForeground
protected Color selectionBackground
构造方法详细信息 |
---|
public JTable()
JTable
,使用默认的数据模型、默认的列模型和默认的选择模型对其进行初始化。
createDefaultDataModel()
,
createDefaultColumnModel()
,
createDefaultSelectionModel()
public JTable(TableModel dm)
JTable
,使用 dm
作为数据模型、默认的列模型和默认的选择模型对其进行初始化。
dm
- 表的数据模型createDefaultColumnModel()
,
createDefaultSelectionModel()
public JTable(TableModel dm, TableColumnModel cm)
JTable
,使用 dm
作为数据模型、cm
作为列模型和默认的选择模型对其进行初始化。
dm
- 表的数据模型cm
- 表的列模型createDefaultSelectionModel()
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()
public JTable(int numRows, int numColumns)
DefaultTableModel
构造具有空单元格的 numRows
行和 numColumns
列的 JTable
。列名称采用 "A"、"B"、"C" 等的形式。
numRows
- 表占有的行数numColumns
- 表占有的列数DefaultTableModel
public JTable(Vector rowData, Vector columnNames)
JTable
,用来显示 Vectors
的 Vector
(rowData
) 中的值,其列名称为 columnNames
。rowData
中包含的 Vectors
应该包含该行的值。换句话说,可以通过以下代码获取第 1 行,第 5 列单元格的值:
((Vector)rowData.elementAt(1)).elementAt(5);
rowData
- 新表的数据columnNames
- 每列的名称public JTable(Object[][] rowData, Object[] columnNames)
JTable
,用来显示二维数组 rowData
中的值,其列名称为 columnNames
。rowData
是一个行数组,因此可以通过以下代码获取第 1 行,第 5 列单元格的值:
rowData[1][5];
所有行的长度必须与 columnNames
的长度相同。
rowData
- 新表的数据columnNames
- 每列的名称方法详细信息 |
---|
public void addNotify()
configureEnclosingScrollPane
方法。
JComponent
中的 addNotify
configureEnclosingScrollPane()
protected void configureEnclosingScrollPane()
JTable
是一个封闭 JScrollPane
的 viewportView
(通常情况如此),那么可通过安装表的 tableHeader
作为滚动窗格的 columnHeaderView
来配置此 ScrollPane
。以正常方式向 JScrollPane
添加 JTable
时,请使用 new JScrollPane(myTable)
,addNotify
是在 JTable
中调用的(表被添加到视口中时)。JTable
的 addNotify
方法依次调用此方法,此方法是受保护的,以便子类可以重写此默认的安装过程。
addNotify()
public void removeNotify()
unconfigureEnclosingScrollPane
方法。
JComponent
中的 removeNotify
unconfigureEnclosingScrollPane()
protected void unconfigureEnclosingScrollPane()
columnHeaderView
替换为 null
,可以起到 configureEnclosingScrollPane
的相反作用。JTable
的 removeNotify
方法调用此方法,此方法是受保护的,以便子类可以重写此默认的卸载过程。
removeNotify()
,
configureEnclosingScrollPane()
@Deprecated public static JScrollPane createScrollPaneForTable(JTable aTable)
new JScrollPane(aTable)
取代。
new JScrollPane(aTable)
。
public void setTableHeader(JTableHeader tableHeader)
JTable
所使用的 tableHeader
设置为 newHeader
。tableHeader
为 null
是合法的。
tableHeader
- 新的 tableHeadergetTableHeader()
public JTableHeader getTableHeader()
JTable
所使用的 tableHeader
。
tableHeader
setTableHeader(javax.swing.table.JTableHeader)
public void setRowHeight(int rowHeight)
rowHeight
(以像素为单位)、重新验证并重新绘制它。单元格的高度等于行高减去行间距。
rowHeight
- 新的行高
IllegalArgumentException
- 如果 rowHeight
小于 1getRowHeight()
public int getRowHeight()
setRowHeight(int)
public void setRowHeight(int row, int rowHeight)
row
的高度设置为 rowHeight
、重新验证并重新绘制它。此行中单元格的高度等于行高减去行间距。
row
- 更改高度的行rowHeight
- 新的行高,以像素为单位
IllegalArgumentException
- 如果 rowHeight
小于 1public int getRowHeight(int row)
row
中单元格的高度,以像素为单位。
row
- 要返回其高度的行
public void setRowMargin(int rowMargin)
rowMargin
- 一行中单元格之间的像素数getRowMargin()
public int getRowMargin()
getIntercellSpacing().height
。
setRowMargin(int)
public void setIntercellSpacing(Dimension intercellSpacing)
rowMargin
和 columnMargin
(单元格之间间距的高度和宽度)设置为 intercellSpacing
。
intercellSpacing
- 指定了单元格之间新高度和宽度的 Dimension
getIntercellSpacing()
public Dimension getIntercellSpacing()
setIntercellSpacing(java.awt.Dimension)
public void setGridColor(Color gridColor)
gridColor
并重新显示它。默认的颜色取决于外观。
gridColor
- 网格线的新颜色
IllegalArgumentException
- 如果 gridColor
为 null
getGridColor()
public Color getGridColor()
setGridColor(java.awt.Color)
public void setShowGrid(boolean showGrid)
showGrid
为 true,则绘制网格线;如果为 false,则不绘制。没有 getShowGrid
方法,因为此状态保存在两个变量中,这两个变量是 showHorizontalLines
和 showVerticalLines
,可以对其中任何一个变量单独进行查询。
showGrid
- 如果表视图应该绘制网格线,则为 truesetShowVerticalLines(boolean)
,
setShowHorizontalLines(boolean)
public void setShowHorizontalLines(boolean showHorizontalLines)
showHorizontalLines
为 true,则绘制水平线;如果为 false,则不绘制。
showHorizontalLines
- 如果表视图应该绘制水平线,则为 truegetShowHorizontalLines()
,
setShowGrid(boolean)
,
setShowVerticalLines(boolean)
public void setShowVerticalLines(boolean showVerticalLines)
showVerticalLines
为 true,则绘制垂直线;如果为 false,则不绘制。
showVerticalLines
- 如果表视图应该绘制垂直线,则为 truegetShowVerticalLines()
,
setShowGrid(boolean)
,
setShowHorizontalLines(boolean)
public boolean getShowHorizontalLines()
setShowHorizontalLines(boolean)
public boolean getShowVerticalLines()
setShowVerticalLines(boolean)
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_COLUMNSgetAutoResizeMode()
,
doLayout()
public int getAutoResizeMode()
setAutoResizeMode(int)
,
doLayout()
public void setAutoCreateColumnsFromModel(boolean autoCreateColumnsFromModel)
autoCreateColumnsFromModel
标志。如果 autoCreateColumnsFromModel
由 false 更改为 true,则此方法调用 createDefaultColumnsFromModel
。
autoCreateColumnsFromModel
- 如果 JTable
应该自动创建列,则为 truegetAutoCreateColumnsFromModel()
,
createDefaultColumnsFromModel()
public boolean getAutoCreateColumnsFromModel()
setModel
将清除任何现有的列并根据新模型创建新的列。同样,如果 tableChanged
通知中的事件指定整个表已更改,则将重新构建各列。默认值为 true。
setAutoCreateColumnsFromModel(boolean)
,
createDefaultColumnsFromModel()
public void createDefaultColumnsFromModel()
TableModel
接口中定义的 getColumnCount
方法根据数据模型创建默认的表列。
在根据模型的信息创建新的列之前,清除任何现有的列。
getAutoCreateColumnsFromModel()
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)
public TableCellRenderer getDefaultRenderer(Class<?> columnClass)
TableColumn
中设置渲染器时,返回要使用的单元格渲染器。呈现单元格时,是根据列中各单元格的类从各项的 Hashtable
中获取渲染器的。如果没有此 columnClass
的项,则此方法返回最相关超类的项。JTable
安装了可以修改和替换的 Object
、Number
和 Boolean
项。
columnClass
- 返回此 columnClass 的默认单元格渲染器
setDefaultRenderer(java.lang.Class>, javax.swing.table.TableCellRenderer)
,
getColumnClass(int)
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)
public TableCellEditor getDefaultEditor(Class<?> columnClass)
TableColumn
中设置编辑器时,返回要使用的编辑器。编辑单元格时,是根据列中各单元格的类从各项的 Hashtable
中获取编辑器的。如果没有此 columnClass
的项,则此方法返回最相关超类的项。JTable
安装了可以修改和替换的 Object
、Number
和 Boolean
项。
columnClass
- 返回此 columnClass 的默认单元格编辑器
setDefaultEditor(java.lang.Class>, javax.swing.table.TableCellEditor)
,
getColumnClass(int)
public void setDragEnabled(boolean b)
dragEnabled
属性,该属性必须为 true
才能确保启用对此组件的自动拖动处理(拖放操作的第一部分)。需要将 transferHandler
属性设置为非 null
值,以便拖动执行操作。dragEnabled
属性的默认值为 false
。
当启用自动化拖动处理时,只要用户在选择上按住鼠标按钮,并将鼠标移动几个像素,多数外观就会开始拖放操作。因此,将此属性设置为 true
可以对选择行为产生微妙的影响。
有些外观可能不支持自动拖放;它们将忽略此属性。可以通过修改该组件直接调用 TransferHandler
的 exportAsDrag
方法来解决此类外观。
b
- 设置 dragEnabled
属性的值
HeadlessException
- 如果 b
为 true
,并且 GraphicsEnvironment.isHeadless()
返回 true
GraphicsEnvironment.isHeadless()
,
getDragEnabled()
,
JComponent.setTransferHandler(javax.swing.TransferHandler)
,
TransferHandler
public boolean getDragEnabled()
dragEnabled
属性的值。
dragEnabled
属性的值setDragEnabled(boolean)
public void setSelectionMode(int selectionMode)
JTable
提供了用于处理行选择和列选择的所有方法。设置状态时(例如 setSelectionMode
),它不仅更新行选择模型的模式,而且还将设置 columnModel
选择模型中的类似值。如果希望在不同的模式中操作行选择模型和列选择模型,请直接设置这二者。
JTable
的行选择模型和列选择模型都默认使用 DefaultListSelectionModel
,以便 JTable
与 JList
的工作方式相同。有关各种模式的详细信息,请参阅 JList
中的 setSelectionMode
方法。
JList.setSelectionMode(int)
public void setRowSelectionAllowed(boolean rowSelectionAllowed)
rowSelectionAllowed
- 如果此模型允许行选择,则为 truegetRowSelectionAllowed()
public boolean getRowSelectionAllowed()
setRowSelectionAllowed(boolean)
public void setColumnSelectionAllowed(boolean columnSelectionAllowed)
columnSelectionAllowed
- 如果此模型允许列选择,则为 truegetColumnSelectionAllowed()
public boolean getColumnSelectionAllowed()
setColumnSelectionAllowed(boolean)
public void setCellSelectionEnabled(boolean cellSelectionEnabled)
isCellSelected
以更改此默认行为。此方法等效于将 columnModel
的 rowSelectionAllowed
属性和 columnSelectionAllowed
属性均设置为所提供的值。
cellSelectionEnabled
- 如果允许同时存在行选择和列选择,则为 truegetCellSelectionEnabled()
,
isCellSelected(int, int)
public boolean getCellSelectionEnabled()
getRowSelectionAllowed() && getColumnSelectionAllowed()
。
setCellSelectionEnabled(boolean)
public void selectAll()
public void clearSelection()
public void setRowSelectionInterval(int index0, int index1)
index0
到 index1
(包含)之间的行。
index0
- 间隔的一端index1
- 间隔的另一端
IllegalArgumentException
- 如果 index0
或 index1
位于 [0,getRowCount()
-1] 范围外public void setColumnSelectionInterval(int index0, int index1)
index0
到 index1
(包含)之间的列。
index0
- 间隔的一端index1
- 间隔的另一端
IllegalArgumentException
- 如果 index0
或 index1
位于 [0, getColumnCount()
-1] 范围外public void addRowSelectionInterval(int index0, int index1)
index0
到 index1
(包含)之间的行添加到当前选择中。
index0
- 间隔的一端index1
- 间隔的另一端
IllegalArgumentException
- 如果 index0
或 index1
位于 [0, getRowCount()
-1] 范围外public void addColumnSelectionInterval(int index0, int index1)
index0
到 index1
(包含)之间的列添加到当前选择中。
index0
- 间隔的一端index1
- 间隔的另一端
IllegalArgumentException
- 如果 index0
或 index1
位于 [0, getColumnCount()
-1] 范围外public void removeRowSelectionInterval(int index0, int index1)
index0
到 index1
(包括)的行。
index0
- 间隔的一端index1
- 间隔的另一端
IllegalArgumentException
- 如果 index0
或 index1
位于 [0, getRowCount()
-1] 范围外public void removeColumnSelectionInterval(int index0, int index1)
index0
到 index1
(包括)的列。
index0
- 间隔的一端index1
- 间隔的另一端
IllegalArgumentException
- 如果 index0
或 index1
位于 [0, getColumnCount()
-1] 范围外public int getSelectedRow()
public int getSelectedColumn()
public int[] getSelectedRows()
getSelectedRow()
public int[] getSelectedColumns()
getSelectedColumn()
public int getSelectedRowCount()
public int getSelectedColumnCount()
public boolean isRowSelected(int row)
row
是有效的索引,并且在该索引位置的行被选定(其中 0 表示第一行),则返回 truepublic boolean isColumnSelected(int column)
column
- 列模型中的列
column
是有效的索引,并且在该索引位置的列被选定(其中 0 表示第一列),则返回 truepublic boolean isCellSelected(int row, int column)
row
- 正在被查询的行column
- 正在被查询的列
row
和 column
是有效的索引,并且在索引 (row, column)
位置的单元格被选定(其中第一行和第一列位于索引 0),则返回 truepublic void changeSelection(int rowIndex, int columnIndex, boolean toggle, boolean extend)
toggle
和 extend
。大多数选择的更改是通过此方法来传递的,以便子类可能重写此行为,其中这些更改是 UI 所接收的键盘事件或鼠标事件的结果。某些 UI 可能需要的功能多于此方法所提供的功能(例如在操作不连续选择的 lead 时),并且对于某些选择更改可能不调用到此方法中。
此实现使用以下约定:
toggle
:false,extend
:false。清除以前的选择并确保选定新的单元格。
toggle
:false,extend
:true。将以前的选择从定位点扩展到指定的单元格,清除所有其他选择。
toggle
:true,extend
:false。如果指定的单元格是选定的,则取消选定它。如果它不是选定的,则选定它。
toggle
:true,extend
:true。保持当前的选择状态,但将定位点索引移动到指定位置。
rowIndex
- 影响 row
的选择columnIndex
- 影响 column
的选择toggle
- 参见上面的描述extend
- 如果为 true,则扩展当前的选择public Color getSelectionForeground()
Color
对象setSelectionForeground(java.awt.Color)
,
setSelectionBackground(java.awt.Color)
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)
public Color getSelectionBackground()
Color
setSelectionBackground(java.awt.Color)
,
setSelectionForeground(java.awt.Color)
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)
public TableColumn getColumn(Object identifier)
TableColumn
对象,当使用 equals
进行比较时,表的标识符等于 identifier
。
identifier
- 标识符对象
TableColumn
对象
IllegalArgumentException
- 如果 identifier
为 null
或者没有 TableColumn
具有此标识符public int convertColumnIndexToModel(int viewColumnIndex)
viewColumnIndex
的列索引映射到表模型中的列索引。返回模型中的对应列索引。如果 viewColumnIndex
小于 0,则返回 viewColumnIndex
。
viewColumnIndex
- 视图中的列索引
convertColumnIndexToView(int)
public int convertColumnIndexToView(int modelColumnIndex)
modelColumnIndex
的列索引映射到视图中的列索引。返回视图中的对应列索引;如果此列不是正在显示的列,则返回 -1。如果 modelColumnIndex
小于 0,则返回 modelColumnIndex
。
modelColumnIndex
- 模型中的列索引
convertColumnIndexToModel(int)
public int getRowCount()
getColumnCount()
public int getColumnCount()
getRowCount()
,
removeColumn(javax.swing.table.TableColumn)
public String getColumnName(int column)
column
列位置处的列名称。
column
- 视图中所查询的列
column
位置的列名称,其中第一列为列 0public Class<?> getColumnClass(int column)
column
列位置处的列类型。
column
- 视图中所查询的列
column
位置的列类型,其中第一列为列 0public Object getValueAt(int row, int column)
row
和 column
位置的单元格值。
注:列是以表视图的显示顺序指定的,而不以 TableModel
的列顺序指定的。这是一项重要的区别,因为在用户重新安排表中的列时,视图中给定索引处的列将更改。同时用户的操作永远不会影响模型的列顺序。
row
- 其值要被查询的行column
- 其值要被查询的列
public void setValueAt(Object aValue, int row, int column)
row
和 column
位置的单元格值。
注:列是以表视图的显示顺序指定的,而不以 TableModel
的列顺序指定的。这是一项重要的区别,因为在用户重新安排表中的列时,视图中给定索引处的列将更改。同时用户的操作永远不会影响模型的列顺序。
aValue
是一个新值。
aValue
- 新值row
- 要改变的单元格所处的行column
- 要改变的单元格所处的列getValueAt(int, int)
public boolean isCellEditable(int row, int column)
row
和 column
位置的单元格是可编辑的,则返回 true。否则,在单元格上调用的 setValueAt
无效。
注:列是以表视图的显示顺序指定的,而不以 TableModel
的列顺序指定的。这是一项重要的区别,因为在用户重新安排表中的列时,视图中给定索引处的列将更改。同时用户的操作永远不会影响模型的列顺序。
row
- 其值要被查询的行column
- 其值要被查询的列
setValueAt(java.lang.Object, int, int)
public void addColumn(TableColumn aColumn)
aColumn
追加到此 JTable
的列模型所保持的列数组的结尾。如果 aColumn
的列名称为 null
,则将 aColumn
的列名称设置为 getModel().getColumnName()
所返回的名称。
要向此 JTable
添加一列,以用给定的 width
、cellRenderer
和 cellEditor
来显示模型中第 modelColumn
列的数据,可以使用以下方法:
addColumn(new TableColumn(modelColumn, width, cellRenderer, cellEditor));[
TableColumn
构造方法中的任何一个方法都可以用来替代此方法。]模型的列号存储在 TableColumn
中,在呈现和编辑过程中使用该列号来定位模型中合适的数据值。当列在视图中重新排序时,不更改模型的列号。
aColumn
- 要添加的 TableColumn
removeColumn(javax.swing.table.TableColumn)
public void removeColumn(TableColumn aColumn)
JTable
的列数组中移除 aColumn
。注:此方法不从模型中移除数据列;它只移除负责显示它的 TableColumn
。
aColumn
- 要移除的 TableColumn
addColumn(javax.swing.table.TableColumn)
public void moveColumn(int column, int targetColumn)
column
列移动到当前被 targetColumn
列所占用的位置。targetColumn
位置上的原有列向左或右移动以留出空间。
column
- 要移动列的索引targetColumn
- 列的新索引public int columnAtPoint(Point point)
point
位置的列索引,如果结果不在 [0, getColumnCount()
-1] 范围内,则返回 -1。
point
- 要查询的位置
point
位置的列索引,如果结果不在 [0, getColumnCount()
-1] 范围内,则返回 -1rowAtPoint(java.awt.Point)
public int rowAtPoint(Point point)
point
位置的行索引,如果结果不在 [0, getRowCount()
-1] 范围内,则返回 -1。
point
- 要查询的位置
point
位置的行索引,如果结果不在 [0, getRowCount()
-1] 范围内,则返回 -1columnAtPoint(java.awt.Point)
public Rectangle getCellRect(int row, int column, boolean includeSpacing)
row
和 column
相交位置的单元格矩形。如果 includeSpacing
为 true,则返回的值具有指定行和列的完整高度和宽度。如果为 false,则返回的矩形为单元格空间减去单元格间的间隙,以便在呈现期间设置该属性后,返回正在呈现和编辑的组件的真实边界。
如果列索引有效但是行索引小于 0,则此方法返回一个矩形,此矩形的 y
和 height
设置为合适的值,其 x
和 width
值设置为 0。通常,不管是行索引还是列索引指示适当区域外的单元格时,此方法都返回一个矩形,它描绘了表范围内最近单元格的最近边。当行索引和列索引都超出范围时,返回的矩形覆盖了最近单元格的最近点。
在所有的情形中,使用此方法沿一个轴的计算结果不会因为沿另一个轴的计算出现异常而导致失败。当单元格无效时,忽略 includeSpacing
参数。
row
- 所需单元格位于的行索引column
- 所需单元格位于的列索引;这不一定与该表中数据模型的列索引相同;convertColumnIndexToView(int)
方法可以用来将数据模型的列索引转换为显示的列索引includeSpacing
- 如果为 false,则返回实际的单元格边界,计算方法是从列模型和行模型的高度和宽度减去单元格间距
row
、column
处的单元格的矩形public void doLayout()
JTable
列的总宽度等于表的宽度。
开始布局之前,此方法获取 tableHeader
的 resizingColumn
。当此方法作为调整封闭窗口大小的结果被调用时,resizingColumn
为 null
。这意味着调整大小发生在 JTable
的“外部”,并且应该将更改(或 "delta" )分布到所有列,而不管此 JTable
的自动调整大小模式如何。
如果 resizingColumn
不为 null
,则它是发生大小更改的表中的一列,而不是表本身。在这种情况下,自动调整大小模式控制额外(或不足)空间在可用列之间的分布方式。
该模式有:
Viewport
的宽度时,使用水平滚动条来适应列的宽度。如果 JTable
没有封闭在 JScrollPane
中,则可能导致该表的一部分不可见。
JTable
中的所有列之间,包括正在被调整的列。
JTable
调整列宽时,它绝对遵守其最小值和最大值。但是即使在调用此方法后,列的总宽度仍然可能不等于表的宽度。发生这种情况时,JTable
不将其置于 AUTO_RESIZE_OFF 模式来生成一个滚动条,或者中断其当前自动调整模式的其他提交,相反,它允许其边界设置为大于(或小于)最小总宽度或最大总宽度,这意味着要么没有足够的空间来显示所有的列,要么就是列不能放入 JTable
的边界内。这些情况分别导致在绘制时,某些列或某个区域的剪贴区被绘制为 JTable
的背景色。
用于在可用列之间分布 delta 的机制是由 JTable
类中的一个私有方法提供的:
adjustSizes(long targetSize, final Resizable3 r, boolean inverse)以下部分是所提供内容的解释。
Resizable3
是一个私有接口,它允许包含元素集合的任何数据结构由其他方法通过算法来操作其元素,元素集合可以具有大小、首选大小、最大大小和最低大小。
我们称 "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
,这是通过把舍入误差均匀分散到给定元素上来实现的。
当 targetSize
处于 [MIN, MAX] 范围外时,算法将所有大小设置为其适合的限定值(最大值或最小值)。
Container
中的 doLayout
LayoutManager.layoutContainer(java.awt.Container)
,
Container.setLayout(java.awt.LayoutManager)
,
Container.validate()
@Deprecated public void sizeColumnsToFit(boolean lastColumnOnly)
doLayout()
取代。
doLayout()
public void sizeColumnsToFit(int resizingColumn)
doLayout()
方法。
resizingColumn
- 由于大小的改变导致需要进行此调整的列,如果没有这样的列,则为 -1doLayout()
public String getToolTipText(MouseEvent event)
JComponent
的 getToolTipText
方法,从而允许使用渲染器的提示(如果设置了文本)。
JTable
正确显示渲染器的工具提示,JTable
必须是 ToolTipManager
中的注册组件。此操作可在 initializeLocalVars
中自动完成,但是如果之后在 JTable
上调用了 setToolTipText(null)
,则这是一个注销的表组件,渲染器的提示将不再显示。
JComponent
中的 getToolTipText
JComponent.getToolTipText()
public void setSurrendersFocusOnKeystroke(boolean surrendersFocusOnKeystroke)
surrendersFocusOnKeystroke
- 如果当击键导致编辑器被激活时编辑器应该获得焦点,则为 truegetSurrendersFocusOnKeystroke()
public boolean getSurrendersFocusOnKeystroke()
setSurrendersFocusOnKeystroke(boolean)
public boolean editCellAt(int row, int column)
row
和 column
位置的索引在有效范围内,并且这些索引处的单元格是可编辑的,则以编程方式启动该位置单元格的编辑。注意,这是 editCellAt(int, int, null)
的一种便捷方法。
row
- 要编辑的行column
- 要编辑的列
public boolean editCellAt(int row, int column, EventObject e)
row
和 column
位置的索引在有效范围内,并且这些索引处的单元格是可编辑的,则以编程方式启动该位置单元格的编辑。为了防止 JTable
编辑特定的表、列或单元格的值,从 TableModel
接口中的 isCellEditable
方法要返回 false。
row
- 要编辑的行column
- 要编辑的列e
- 要传递到 shouldSelectCell
中的事件;注意从 Java 2 platform v1.2 开始,不再调用 shouldSelectCell
public boolean isEditing()
editingColumn
,
editingRow
public Component getEditorComponent()
public int getEditingColumn()
editingRow
public int getEditingRow()
editingColumn
public TableUI getUI()
TableUI
对象public void setUI(TableUI ui)
ui
- TableUI L&F 对象UIDefaults.getUI(javax.swing.JComponent)
public void updateUI()
UIManager
发出的表明 L&F 已经更改的通知。用 UIManager
的最新版本替换当前的 UI 对象。
JComponent
中的 updateUI
JComponent.updateUI()
public String getUIClassID()
JComponent
中的 getUIClassID
JComponent.getUIClassID()
,
UIDefaults.getUI(javax.swing.JComponent)
public void setModel(TableModel dataModel)
newModel
,并为来自新数据模型的侦听器通知注册它。
dataModel
- 此表的新数据源
IllegalArgumentException
- 如果 newModel
为 null
getModel()
public TableModel getModel()
JTable
所显示数据的 TableModel
。
JTable
所显示数据的 TableModel
setModel(javax.swing.table.TableModel)
public void setColumnModel(TableColumnModel columnModel)
newModel
,并为来自新列模型的侦听器通知注册它。还要将 JTableHeader
的列模型设置为 columnModel
。
columnModel
- 此表的新数据源
IllegalArgumentException
- 如果 columnModel
为 null
getColumnModel()
public TableColumnModel getColumnModel()
TableColumnModel
。
setColumnModel(javax.swing.table.TableColumnModel)
public void setSelectionModel(ListSelectionModel newModel)
newModel
,并为来自新选择模型的侦听器通知进行注册。
newModel
- 新的选择模型
IllegalArgumentException
- 如果 newModel
为 null
getSelectionModel()
public ListSelectionModel getSelectionModel()
ListSelectionModel
。
null
setSelectionModel(javax.swing.ListSelectionModel)
public void tableChanged(TableModelEvent e)
TableModel
生成 TableModelEvent
时调用。应在该模型的坐标系统中构造 TableModelEvent
;当此 JTable
接收事件时,它执行到视图坐标系统的适当映射。
应用程序代码不显式地使用这些方法,它们由 JTable
在内部使用。
注意,从 1.3 版本开始,此方法清除选择(如果有的话)。
TableModelListener
中的 tableChanged
public void columnAdded(TableColumnModelEvent e)
应用程序代码不显式地使用这些方法,它们由 JTable 在内部使用。
TableColumnModelListener
中的 columnAdded
TableColumnModelListener
public void columnRemoved(TableColumnModelEvent e)
应用程序代码不显式地使用这些方法,它们由 JTable 在内部使用。
TableColumnModelListener
中的 columnRemoved
TableColumnModelListener
public void columnMoved(TableColumnModelEvent e)
应用程序代码不显式地使用这些方法,它们由 JTable 在内部使用。
TableColumnModelListener
中的 columnMoved
e
- 接收到的事件TableColumnModelListener
public void columnMarginChanged(ChangeEvent e)
应用程序代码不显式地使用这些方法,它们由 JTable 在内部使用。
TableColumnModelListener
中的 columnMarginChanged
e
- 接收到的事件TableColumnModelListener
public void columnSelectionChanged(ListSelectionEvent e)
TableColumnModel
的选择模型更改时调用。
应用程序代码不显式地使用这些方法,它们由 JTable 在内部使用。
TableColumnModelListener
中的 columnSelectionChanged
e
- 接收到的事件TableColumnModelListener
public void valueChanged(ListSelectionEvent e)
应用程序代码不显式地使用这些方法,它们由 JTable 在内部使用。
ListSelectionListener
中的 valueChanged
e
- 接收到的事件ListSelectionListener
public void editingStopped(ChangeEvent e)
应用程序代码不显式地使用这些方法,它们由 JTable 在内部使用。
CellEditorListener
中的 editingStopped
e
- 接收到的事件CellEditorListener
public void editingCanceled(ChangeEvent e)
应用程序代码不显式地使用这些方法,它们由 JTable 在内部使用。
CellEditorListener
中的 editingCanceled
e
- 接收到的事件CellEditorListener
public void setPreferredScrollableViewportSize(Dimension size)
size
- 指定了 JViewport
(其视图为此表)的 preferredSize
的 Dimension
对象Scrollable.getPreferredScrollableViewportSize()
public Dimension getPreferredScrollableViewportSize()
Scrollable
中的 getPreferredScrollableViewportSize
JViewport
(它显示此表)的 preferredSize
的 Dimension
对象Scrollable.getPreferredScrollableViewportSize()
public int getScrollableUnitIncrement(Rectangle visibleRect, int orientation, int direction)
用户每次请求一个单位的滚动时,就调用此方法。
Scrollable
中的 getScrollableUnitIncrement
visibleRect
- 视口中可见的视图区域orientation
- SwingConstants.VERTICAL
或 SwingConstants.HORIZONTAL
direction
- 小于零向上/左滚动,大于零向下/右滚动
Scrollable.getScrollableUnitIncrement(java.awt.Rectangle, int, int)
public int getScrollableBlockIncrement(Rectangle visibleRect, int orientation, int direction)
visibleRect.height
或 visibleRect.width
,这取决于此表的方向。注意,从 Swing 1.1.1 (Java 2 v 1.2.2) 开始,返回的值将确保视口在行边界上完全对齐。
Scrollable
中的 getScrollableBlockIncrement
visibleRect
- 视口内可见的视图区域orientation
- SwingConstants.VERTICAL 或 SwingConstants.HORIZONTAL。direction
- 小于零为向上/左滚动,大于零为向下/右滚动。
visibleRect.height
或 visibleRect.width
Scrollable.getScrollableBlockIncrement(java.awt.Rectangle, int, int)
public boolean getScrollableTracksViewportWidth()
autoResizeMode
设置为 AUTO_RESIZE_OFF
,则返回 false,这指示表的宽度不是由视口的宽度所决定的。否则返回 true。
Scrollable
中的 getScrollableTracksViewportWidth
autoResizeMode
设置为 AUTO_RESIZE_OFF
,则返回 false;否则返回 trueScrollable.getScrollableTracksViewportWidth()
public boolean getScrollableTracksViewportHeight()
Scrollable
中的 getScrollableTracksViewportHeight
Scrollable.getScrollableTracksViewportHeight()
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
- 为下列值之一:
pressed
- 如果键被按下,则为 true
protected void createDefaultRenderers()
DefaultTableCellRenderer
protected void createDefaultEditors()
DefaultCellEditor
protected void initializeLocalVars()
protected TableModel createDefaultDataModel()
DefaultTableModel
。子类可以重写此方法以返回不同的表模型对象。
DefaultTableModel
protected TableColumnModel createDefaultColumnModel()
DefaultTableColumnModel
。子类可以重写此方法以返回不同的列模型对象。
DefaultTableColumnModel
protected ListSelectionModel createDefaultSelectionModel()
DefaultListSelectionModel
。子类可以重写此方法以返回不同的选择模型对象。
DefaultListSelectionModel
protected JTableHeader createDefaultTableHeader()
JTableHeader
。子类可以重写此方法以返回不同的表标题对象。
JTableHeader
protected void resizeAndRepaint()
revalidate
后跟 repaint
。
public TableCellEditor getCellEditor()
TableCellEditor
cellEditor
public void setCellEditor(TableCellEditor anEditor)
cellEditor
变量。
anEditor
- 执行编辑任务的 TableCellEditorcellEditor
public void setEditingColumn(int aColumn)
editingColumn
变量。
aColumn
- 要编辑单元格的列editingColumn
public void setEditingRow(int aRow)
editingRow
变量。
aRow
- 要编辑单元格的行editingRow
public TableCellRenderer getCellRenderer(int row, int column)
TableColumn
有一个非 null 的渲染器,则返回它。如果没有,则查找此列中的数据类(使用 getColumnClass
),并返回此数据类型的默认渲染器。
注:在整个表的包中,内部实现始终使用此方法来提供渲染器,以便子类能够安全地重写此默认行为。
row
- 要呈现的单元格所在行,其中第一行为 0column
- 要呈现的单元格所在列,其中第一列为 0
null
,则返回此对象类型的默认渲染器DefaultTableCellRenderer
,
TableColumn.setCellRenderer(javax.swing.table.TableCellRenderer)
,
setDefaultRenderer(java.lang.Class>, javax.swing.table.TableCellRenderer)
public Component prepareRenderer(TableCellRenderer renderer, int row, int column)
row
、column
处单元格值的数据模型和单元格选择状态来准备渲染器。返回事件所在的组件(可能是 Component
或 JComponent
)。
注:在整个表的包中,内部实现始终使用此方法来准备渲染器,以便子类能够安全地重写此默认行为。
renderer
- 要准备的 TableCellRenderer
row
- 要呈现的单元格所在行,其中第一行为 0column
- 要呈现的单元格所在列,其中第一列为 0
Component
public TableCellEditor getCellEditor(int row, int column)
row
和 column
所指定单元格的编辑器。如果此列的 TableColumn
有一个非 null 的编辑器,则返回它。如果没有,则查找此列中的数据类(使用 getColumnClass
),并返回此数据类型的默认编辑器。
注:在整个表的包中,内部实现始终使用此方法来提供编辑器,以便子类能够安全地重写此默认行为。
row
- 要编辑的单元格所在行,其中第一行为 0column
- 要编辑的单元格所在列,其中第一列为 0
null
,则返回此单元格类型的默认编辑器DefaultCellEditor
public Component prepareEditor(TableCellEditor editor, int row, int column)
row
、column
处单元格值的数据模型和单元格选择状态来准备编辑器。
注:在整个表的包中,内部实现始终使用此方法来准备编辑器,以便子类能够安全地重写此默认行为。
editor
- 要设置的 TableCellEditor
row
- 要编辑的单元格所在行,其中第一行为 0column
- 要编辑的单元格所在列,其中第一列为 0
Component
public void removeEditor()
protected String paramString()
null
。
JComponent
中的 paramString
public boolean print() throws PrinterException
PrintMode.FIT_WIDTH
模式打印此 JTable
,不打印标题或脚注文本。打印期间将显示一个有模式的进度对话框(带有中止选项)。
注:在 headless 模式中不显示对话框。
PrinterException
- 如果打印系统的错误导致打印作业中止print(JTable.PrintMode, MessageFormat, MessageFormat, boolean, PrintRequestAttributeSet, boolean)
,
getPrintable(javax.swing.JTable.PrintMode, java.text.MessageFormat, java.text.MessageFormat)
public boolean print(JTable.PrintMode printMode) throws PrinterException
JTable
,不打印标题或脚注文本。打印期间将显示一个有模式的进度对话框(带有中止选项)。
注:在 headless 模式中不显示对话框。
printMode
- printable 应使用的打印模式
PrinterException
- 如果打印系统的错误导致打印作业中止print(JTable.PrintMode, MessageFormat, MessageFormat, boolean, PrintRequestAttributeSet, boolean)
,
getPrintable(javax.swing.JTable.PrintMode, java.text.MessageFormat, java.text.MessageFormat)
public boolean print(JTable.PrintMode printMode, MessageFormat headerFormat, MessageFormat footerFormat) throws PrinterException
JTable
,打印指定的标题和脚注文本。打印期间将显示一个有模式的进度对话框(带有中止选项)。
注:在 headless 模式中不显示对话框。
printMode
- printable 应使用的打印模式headerFormat
- 指定在打印标题中所用文本的 MessageFormat
,如果没有则为 nullfooterFormat
- 指定在打印脚注中所用文本的 MessageFormat
,如果没有则为 null
PrinterException
- 如果打印系统的错误导致打印作业中止print(JTable.PrintMode, MessageFormat, MessageFormat, boolean, PrintRequestAttributeSet, boolean)
,
getPrintable(javax.swing.JTable.PrintMode, java.text.MessageFormat, java.text.MessageFormat)
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
,如果没有则为 nullfooterFormat
- 指定在打印脚注中所用文本的 MessageFormat
,如果没有则为 nullshowPrintDialog
- 是否显示打印对话框attr
- 指定任何打印属性的 PrintRequestAttributeSet
,如果没有则为 nullinteractive
- 是否以交互模式打印
PrinterException
- 如果打印系统的错误导致打印作业中止
HeadlessException
- 如果要求方法显示打印对话框或交互运行,并且 GraphicsEnvironment.isHeadless
返回 truegetPrintable(javax.swing.JTable.PrintMode, java.text.MessageFormat, java.text.MessageFormat)
,
GraphicsEnvironment.isHeadless()
public Printable getPrintable(JTable.PrintMode printMode, MessageFormat headerFormat, MessageFormat footerFormat)
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
限制向每页的可打印区域绘制的内容。在某些情况下,可能看到该区域不可能放入所有页的内容。在这些情形下,可以截取输出,但实现将采取一些合理的行为。以下是几种已知会发生的情况,以及如何通过此特定实现来处理它们:
ComponentOrientation
所确定的开始处开始打印尽可能多的文本。
PrintMode.NORMAL
中,当列太宽而无法放入可打印区域时,打印该列的中央部分,不打印表的左右边框。
将此 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
,如果没有则为 nullfooterFormat
- 指定在打印脚注中所用文本的 MessageFormat
,如果没有则为 null
Printable
Printable
,
PrinterJob
public AccessibleContext getAccessibleContext()
Accessible
中的 getAccessibleContext
JComponent
中的 getAccessibleContext
|
JavaTM 2 Platform Standard Ed. 5.0 |
|||||||||
上一个类 下一个类 | 框架 无框架 | |||||||||
摘要: 嵌套 | 字段 | 构造方法 | 方法 | 详细信息: 字段 | 构造方法 | 方法 |
版权所有 2004 Sun Microsystems, Inc. 保留所有权利。 请遵守许可证条款。另请参阅文档重新分发政策。