public class JTable extends JComponent implements TableModelListener, Scrollable, TableColumnModelListener, ListSelectionListener, CellEditorListener, Accessible, RowSorterListener
JTable
用于显示和编辑单元格的常规二维表。
见How to Use Tables中的Java教程面向任务的文档和使用的例子JTable
。
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);
JTable
s的通常置于一个内部JScrollPane
。 默认情况下, JTable
将调整其宽度,以使水平滚动条不必要。 要允许水平滚动条,调用setAutoResizeMode(int)
与AUTO_RESIZE_OFF
。 请注意,如果您希望使用JTable
在一个独立的视图(A之外JScrollPane
),并想报头显示,你可以用得到它getTableHeader()
并单独显示它。
要启用行的排序和过滤,请使用RowSorter
。 您可以通过以下两种方法之一设置行排序:
RowSorter
。 例如: table.setRowSorter(new TableRowSorter(model))
。 autoCreateRowSorter
属性为true
,使JTable
创建RowSorter
你。 例如: setAutoCreateRowSorter(true)
。 当设计使用JTable
程序时,值得密切关注表示数据的数据结构。 DefaultTableModel
是一个模型实现,使用Vector
的Vector
s Object
s来存储单元格值。 除了将数据从应用程序复制到DefaultTableModel
,还可以将数据包装在TableModel
接口的方法中,以便将数据直接传递到JTable
,如上例所示。 这通常导致更高效的应用程序,因为该模型可以自由选择最适合数据的内部表示。 决定是否使用AbstractTableModel
或DefaultTableModel
一个很好的经验法则是使用AbstractTableModel
作为创建子类的基类和DefaultTableModel
当不需要子类DefaultTableModel
时。
源代码分发演示区域中的“TableExample”目录提供了一些完整的JTable
使用示例,涵盖了如何使用JTable
提供从数据库获取的数据的可编辑视图以及如何修改显示中的列使用专业的渲染器和编辑器。
JTable
使用整数来引用它显示的模型的行和列。 JTable
只需要一个表格范围的单元格,并使用getValueAt(int, int)
在绘制期间从模型中检索值。 重要的是要记住,各种JTable
方法返回的列和行索引都是JTable
(视图),并不一定与模型使用相同的索引。
默认情况下,列可能会重新排列在JTable
,以便视图的列以与模型中的列不同的顺序显示。 这不影响模型的实现:当列重新排序时, JTable
在JTable
维护列的新顺序,并在查询模型之前转换其列索引。
因此,当编写一个TableModel
时,无需监听列重新排序事件,因为模型将在自己的坐标系中被查询,而不管视图中发生了什么。 在示例区域中,示出了使用这种技术的排序算法来插入另一个坐标系,其中行的顺序被改变,而不是列的顺序。
同样使用所提供的排序和过滤功能时, RowSorter
底层TableModel
并不需要知道如何做排序,而RowSorter
将处理它。 当使用基于JTable
基于行的方法TableModel时,坐标转换将是TableModel
。 所有JTable
基于行的方法是在方面RowSorter
,这不一定是相同的底层的TableModel
。 例如,选择始终是JTable
,所以当使用RowSorter
您将需要使用convertRowIndexToView
或convertRowIndexToModel
进行转换。 以下显示如何将坐标从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
类,您可以使用InputMap
和ActionMap
将Action
对象与KeyStroke
关联 ,并在指定条件下执行操作。
警告: Swing不是线程安全的。 有关更多信息,请参阅Swing's Threading Policy 。
警告:此类的序列化对象与将来的Swing版本不兼容。 当前的序列化支持适用于运行相同版本的Swing的应用程序之间的短期存储或RMI。 从1.4开始,支持所有JavaBeans的长期存储已经添加到java.beans
软件包中。 请参阅XMLEncoder
。
DefaultTableModel
, TableRowSorter
Modifier and Type | Class and Description |
---|---|
protected class |
JTable.AccessibleJTable
这个类实现了可访问性支持
JTable 类。
|
static class |
JTable.DropLocation
的一个子类
TransferHandler.DropLocation 表示用于一个放置位置
JTable 。
|
static class |
JTable.PrintMode
打印模式,用于打印
JTable s。
|
JComponent.AccessibleJComponent
Container.AccessibleAWTContainer
Component.AccessibleAWTComponent, Component.BaselineResizeBehavior, Component.BltBufferStrategy, Component.FlipBufferStrategy
Modifier and Type | Field and Description |
---|---|
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
getColumnClass 中的
TableModel 中声明的按类索引的单元格内容的显示和编辑对象表。
|
protected Hashtable |
defaultRenderersByColumnClass
显示单元格内容的对象表,按照
getColumnClass 中的
TableModel 中声明的类索引。
|
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
如果此表中允许行选择,则为真。
|
protected Color |
selectionBackground
所选单元格的背景颜色。
|
protected Color |
selectionForeground
所选单元格的前景色。
|
protected ListSelectionModel |
selectionModel
该表的
ListSelectionModel 用于跟踪行选择。
|
protected boolean |
showHorizontalLines
如果
showHorizontalLines 为真,表格会在单元格之间绘制水平线。
|
protected boolean |
showVerticalLines
如果
showVerticalLines 为真,表格会在单元格之间绘制垂直线。
|
protected JTableHeader |
tableHeader
TableHeader 使用表。
|
listenerList, TOOL_TIP_TEXT_KEY, ui, UNDEFINED_CONDITION, WHEN_ANCESTOR_OF_FOCUSED_COMPONENT, WHEN_FOCUSED, WHEN_IN_FOCUSED_WINDOW
accessibleContext, BOTTOM_ALIGNMENT, CENTER_ALIGNMENT, LEFT_ALIGNMENT, RIGHT_ALIGNMENT, TOP_ALIGNMENT
ABORT, ALLBITS, ERROR, FRAMEBITS, HEIGHT, PROPERTIES, SOMEBITS, WIDTH
Constructor and Description |
---|
JTable()
构造一个默认
JTable 是使用默认的数据模型,默认的列模型和默认的选择模型对其进行初始化。
|
JTable(int numRows, int numColumns)
构造一个
JTable 与
numRows 和
numColumns 使用空单元格
DefaultTableModel 。
|
JTable(Object[][] rowData, Object[] columnNames)
构造一个
JTable 以显示二维数组中的值
rowData ,列名称为
columnNames 。
|
JTable(TableModel dm)
构造一个
JTable ,它以
dm 为数据模型,默认列模型和默认选择模型。
|
JTable(TableModel dm, TableColumnModel cm)
构造一个
JTable ,它以
dm 作为数据模型
cm ,
cm 作为列模型,以及默认选择模型。
|
JTable(TableModel dm, TableColumnModel cm, ListSelectionModel sm)
构造一个
JTable ,它以
dm 作为数据模型
cm ,
cm 作为列模型,
sm 作为选择模型。
|
JTable(Vector rowData, Vector columnNames)
构造一个
JTable 以显示的值
Vector 的
Vectors ,
rowData ,其列名称为
columnNames 。
|
Modifier and Type | Method and Description |
---|---|
void |
addColumn(TableColumn aColumn)
将
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 所在列的索引,如果结果不在[
getColumnCount() -1]范围内,则
getColumnCount() -1。
|
void |
columnMarginChanged(ChangeEvent e)
当列由于边距更改而移动时调用。
|
void |
columnMoved(TableColumnModelEvent e)
当列重新定位时调用。
|
void |
columnRemoved(TableColumnModelEvent e)
从列列模型中删除列时调用。
|
void |
columnSelectionChanged(ListSelectionEvent e)
当选择模型调用
TableColumnModel 改变。
|
protected void |
configureEnclosingScrollPane()
如果这
JTable 是
viewportView 的封闭
JScrollPane (通常情况下),配置此
ScrollPane 的,除其他事项外,安装表的
tableHeader 为
columnHeaderView 滚动窗格。
|
int |
convertColumnIndexToModel(int viewColumnIndex)
将视图中的列的索引
viewColumnIndex 到表模型中的列的索引
viewColumnIndex 。
|
int |
convertColumnIndexToView(int modelColumnIndex)
将表模型中的列的索引
modelColumnIndex 到视图中的列的索引
modelColumnIndex 。
|
int |
convertRowIndexToModel(int viewRowIndex)
将视图的行的索引映射到底层
TableModel 。
|
int |
convertRowIndexToView(int modelRowIndex)
根据
TableModel 将视图的索引
TableModel 到视图。
|
protected TableColumnModel |
createDefaultColumnModel()
返回默认列模型对象,它是一个
DefaultTableColumnModel 。
|
void |
createDefaultColumnsFromModel()
创建用于从使用所述数据模型默认的表列
getColumnCount 中所定义的方法
TableModel 接口。
|
protected TableModel |
createDefaultDataModel()
返回默认的表模型对象,它是一个
DefaultTableModel 。
|
protected void |
createDefaultEditors()
为对象,数字和布尔值创建默认单元格编辑器。
|
protected void |
createDefaultRenderers()
为对象,数字,双精度,日期,布尔值和图标创建默认单元格渲染器。
|
protected ListSelectionModel |
createDefaultSelectionModel()
返回默认选择模型对象,它是一个
DefaultListSelectionModel 。
|
protected JTableHeader |
createDefaultTableHeader()
返回默认的表头对象,它是一个
JTableHeader 。
|
static JScrollPane |
createScrollPaneForTable(JTable aTable)
已弃用
截至Swing 1.0.2版,替换为
new JScrollPane(aTable) 。
|
void |
doLayout()
导致此表布置其行和列。
|
boolean |
editCellAt(int row, int column)
如果这些索引处于有效范围,那么以
row 方式开始编辑单元格
row 和
column ,并且这些索引处的单元格是可编辑的。
|
boolean |
editCellAt(int row, int column, EventObject e)
如果这些索引处于有效范围,那么以
row 方式开始编辑单元格
row 和
column ,并且这些索引处的单元格是可编辑的。
|
void |
editingCanceled(ChangeEvent e)
编辑被取消后调用。
|
void |
editingStopped(ChangeEvent e)
编辑完成后调用。
|
AccessibleContext |
getAccessibleContext()
获取与此JTable关联的AccessibleContext。
|
boolean |
getAutoCreateColumnsFromModel()
确定表是否将从模型中创建默认列。
|
boolean |
getAutoCreateRowSorter()
返回 true 如果每当模型更改时,新RowSorter 应创建并安装作为该表的排序;
否则返回false 。
|
int |
getAutoResizeMode()
返回表的自动调整大小模式。
|
TableCellEditor |
getCellEditor()
返回活动单元格编辑器,这是
null 如果该表当前没有被编辑。
|
TableCellEditor |
getCellEditor(int row, int column)
返回由
row 和
column 的单元格的适当的编辑器。
|
Rectangle |
getCellRect(int row, int column, boolean includeSpacing)
返回位于
row 和
column 处的单元格的
column 。
|
TableCellRenderer |
getCellRenderer(int row, int column)
为此行和列指定的单元格返回适当的渲染器。
|
boolean |
getCellSelectionEnabled()
如果列和列选择模型都启用,则返回true。
|
TableColumn |
getColumn(Object identifier)
当使用
equals 进行比较时,返回标识符等于
identifier 的表中的列的
TableColumn 对象。
|
类<?> |
getColumnClass(int column)
返回列位置
column 在视图中显示的列的
column 。
|
int |
getColumnCount()
返回列模型中的列数。
|
TableColumnModel |
getColumnModel()
返回
TableColumnModel 包含此表所有列信息。
|
String |
getColumnName(int column)
返回列位置
column 在视图中出现的列的
column 。
|
boolean |
getColumnSelectionAllowed()
如果可以选择列,则返回true。
|
TableCellEditor |
getDefaultEditor(类<?> columnClass)
返回在
TableColumn 中没有设置编辑器时使用的编辑器。
|
TableCellRenderer |
getDefaultRenderer(类<?> 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()
返回
TableModel 提供此显示的数据
JTable 。
|
Dimension |
getPreferredScrollableViewportSize()
返回此表的视口的首选大小。
|
Printable |
getPrintable(JTable.PrintMode printMode, MessageFormat headerFormat, MessageFormat footerFormat)
返回一个
Printable 用于打印此JTable。
|
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.height 或
visibleRect.width ,具体取决于该表的方向。
|
boolean |
getScrollableTracksViewportHeight()
返回
false ,以表示视口的高度不能确定表的高度,除非
getFillsViewportHeight 为
true ,并且表的首选高度小于视口的高度。
|
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()
返回这个
tableHeader 使用的
JTable 。
|
String |
getToolTipText(MouseEvent event)
覆盖
JComponent 的
getToolTipText 方法,以便允许使用渲染器的提示,如果它具有文本集。
|
TableUI |
getUI()
返回渲染此组件的L&F对象。
|
String |
getUIClassID()
返回用于构造用于呈现此组件的L&F类的名称的后缀。
|
boolean |
getUpdateSelectionOnSort()
如果选择应在排序后更新,则返回true。
|
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()
显示打印对话框的方便方法,然后打印
JTable 模式
PrintMode.FIT_WIDTH ,没有页眉或页脚文本。
|
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)
调用以处理键绑定为
ks 作为的结果
KeyEvent
e 。
|
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 所在行的索引,如果结果不在[
getRowCount() -1]范围内,则
getRowCount() -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)
选择从
index0 到
index1 (含)的列。
|
void |
setDefaultEditor(类<?> columnClass, TableCellEditor editor)
如果在
TableColumn 中没有设置编辑器,则设置要使用的默认单元格编辑器。
|
void |
setDefaultRenderer(类<?> 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)
设置
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 |
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)
设置
tableHeader 使用此
JTable 到
newHeader 。
|
void |
setUI(TableUI ui)
设置渲染此组件并重新绘制的L&F对象。
|
void |
setUpdateSelectionOnSort(boolean update)
指定选择是否应在排序后更新。
|
void |
setValueAt(Object aValue, int row, int column)
设置表模型中单元格的值为
row 和
column 。
|
void |
sizeColumnsToFit(boolean lastColumnOnly)
已弃用
截至Swing 1.0.3版,替换为
doLayout() 。
|
void |
sizeColumnsToFit(int resizingColumn)
作为Java 2平台v1.4的过时。
|
void |
sorterChanged(RowSorterEvent e)
RowSorterListener 通知说RowSorter在
RowSorter 已经改变了。
|
void |
tableChanged(TableModelEvent e)
当这个表的
TableModel 生成一个
TableModelEvent 时调用。
|
protected void |
unconfigureEnclosingScrollPane()
逆转的效果
configureEnclosingScrollPane 通过更换
columnHeaderView 与封闭滚动窗格
null 。
|
void |
updateUI()
来自
UIManager 说L&F已经改变了。
|
void |
valueChanged(ListSelectionEvent e)
当行选择更改时调用 - 重绘以显示新选择。
|
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, hide, isDoubleBuffered, isLightweightComponent, isManagingFocus, isOpaque, isOptimizedDrawingEnabled, isPaintingForPrint, isPaintingOrigin, 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
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, transferFocusDownCycle, validate, validateTree
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, 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, transferFocusBackward, transferFocusUpCycle
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
为真,表格会在单元格之间绘制水平线。
protected boolean showVerticalLines
showVerticalLines
为真,表格将在单元格之间绘制垂直线。
protected int autoResizeMode
protected boolean autoCreateColumnsFromModel
TableModel
以构建默认的列集,如果这是真的。
protected Dimension preferredViewportSize
Scrollable
界面用于确定初始可见区域。
protected boolean rowSelectionAllowed
protected boolean cellSelectionEnabled
rowSelectionAllowed
属性和columnSelectionAllowed
的财产columnModel
代替。
或使用方法getCellSelectionEnabled
。
protected transient Component editorComp
Component
正在处理编辑。
protected transient TableCellEditor cellEditor
null
如果表当前没有编辑。
protected transient int editingColumn
protected transient int editingRow
protected transient Hashtable defaultRenderersByColumnClass
getColumnClass
中的
TableModel
中声明的类进行索引。
protected transient Hashtable defaultEditorsByColumnClass
TableModel
接口中
getColumnClass
中声明的按类索引的单元格内容的显示和编辑对象表。
protected Color selectionForeground
protected Color selectionBackground
public JTable()
JTable
是使用默认的数据模型,默认的列模型和默认的选择模型对其进行初始化。
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
, cm
作为列模型,以及sm
作为选择模型。
如果任何参数为null, null
该方法将初始化具有相应默认模型的表。
该autoCreateColumnsFromModel
标志设置为false,如果cm
非空,否则将被设置为true,列模型中填充了适合TableColumns
为列dm
。
dm
- 表的数据模型
cm
- 表的列模型
sm
- 表的行选择模型
createDefaultDataModel()
,
createDefaultColumnModel()
,
createDefaultSelectionModel()
public JTable(int numRows, int numColumns)
JTable
与numRows
和numColumns
使用空单元格DefaultTableModel
。
列将具有“A”,“B”,“C”等形式的名称。
numRows
- 表所包含的行数
numColumns
- 表所包含的列数
DefaultTableModel
public JTable(Vector rowData, Vector columnNames)
JTable
以显示的值Vector
的Vectors
, rowData
,其列名称为columnNames
。
该Vectors
包含在rowData
应该包含该行的值。
换句话说,可以用以下代码获得第1列第5列的单元格值:
((Vector)rowData.elementAt(1)).elementAt(5);
rowData
- 新表的数据
columnNames
- 每列的名称
public void addNotify()
configureEnclosingScrollPane
方法。
addNotify
在
JComponent
configureEnclosingScrollPane()
protected void configureEnclosingScrollPane()
JTable
是viewportView
的封闭JScrollPane
(通常情况下),配置此ScrollPane
的,除其他事项外,安装表的tableHeader
为columnHeaderView
滚动窗格。
当JTable
被添加到JScrollPane
以通常的方式,使用new JScrollPane(myTable)
, addNotify
被称为在JTable
(当表被添加到视口)。
JTable
的addNotify
方法依次调用此方法,该方法受到保护,以便该子类可以覆盖此默认安装过程。
addNotify()
public void removeNotify()
unconfigureEnclosingScrollPane
方法。
protected void unconfigureEnclosingScrollPane()
configureEnclosingScrollPane
通过更换columnHeaderView
与封闭滚动窗格null
。
JTable
的removeNotify
方法调用此方法,该方法受到保护,以便这个默认卸载过程可以被子类覆盖。
removeNotify()
,
configureEnclosingScrollPane()
@Deprecated public static JScrollPane createScrollPaneForTable(JTable aTable)
new JScrollPane(aTable)
。
new JScrollPane(aTable)
。
public void setTableHeader(JTableHeader tableHeader)
tableHeader
使用这个JTable
到newHeader
。
有一个null
tableHeader
是合法的。
tableHeader
- new tableHeader
getTableHeader()
public JTableHeader getTableHeader()
tableHeader
使用的
JTable
。
tableHeader
setTableHeader(javax.swing.table.JTableHeader)
public void setRowHeight(int rowHeight)
rowHeight
,重新验证和重新绘制。
单元格的高度将等于行高减去行边距。
rowHeight
- 新行高
IllegalArgumentException
- 如果
rowHeight
小于1
getRowHeight()
public int getRowHeight()
setRowHeight(int)
public void setRowHeight(int row, int rowHeight)
row
的高度设置为rowHeight
,重新验证和重绘。
该行中的单元格的高度将等于行高减去行边距。
row
- 其高度正在更改的行
rowHeight
- 新行高,以像素为单位
IllegalArgumentException
- 如果
rowHeight
小于1
public 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
是真的;
如果它是假的,它不是。
没有getShowGrid
方法,因为这个状态保存在两个变量 - showHorizontalLines
和showVerticalLines
- 每个showVerticalLines
可以独立查询。
showGrid
- 如果表视图应绘制网格线,则为true
setShowVerticalLines(boolean)
,
setShowHorizontalLines(boolean)
public void setShowHorizontalLines(boolean showHorizontalLines)
showHorizontalLines
是真的;
如果它是假的,它不是。
showHorizontalLines
- 如果表视图应绘制水平线,则为true
getShowHorizontalLines()
,
setShowGrid(boolean)
,
setShowVerticalLines(boolean)
public void setShowVerticalLines(boolean showVerticalLines)
showVerticalLines
是真的;
如果它是假的,它不是。
showVerticalLines
- 如果表视图应绘制垂直线,则为true
getShowVerticalLines()
,
setShowGrid(boolean)
,
setShowHorizontalLines(boolean)
public boolean getShowHorizontalLines()
setShowHorizontalLines(boolean)
public boolean getShowVerticalLines()
setShowVerticalLines(boolean)
public void setAutoResizeMode(int mode)
doLayout()
。
mode
- 5个合法值之一:AUTO_RESIZE_OFF,AUTO_RESIZE_NEXT_COLUMN,AUTO_RESIZE_SUBSEQUENT_COLUMNS,AUTO_RESIZE_LAST_COLUMN,AUTO_RESIZE_ALL_COLUMNS
getAutoResizeMode()
,
doLayout()
public int getAutoResizeMode()
setAutoResizeMode(int)
,
doLayout()
public void setAutoCreateColumnsFromModel(boolean autoCreateColumnsFromModel)
autoCreateColumnsFromModel
标志。
如果autoCreateColumnsFromModel
从false更改为true,则此方法调用createDefaultColumnsFromModel
。
autoCreateColumnsFromModel
- 如果
JTable
应该自动创建列,则为true
getAutoCreateColumnsFromModel()
,
createDefaultColumnsFromModel()
public boolean getAutoCreateColumnsFromModel()
setModel
将清除任何现有列,并从新模型中创建新列。
另外,如果在事件tableChanged
通知指定整个表已更改,则列将被重建。
默认值为true。
setAutoCreateColumnsFromModel(boolean)
,
createDefaultColumnsFromModel()
public void createDefaultColumnsFromModel()
getColumnCount
中所定义的方法TableModel
接口。
根据模型信息创建新列之前清除任何现有的列。
public void setDefaultRenderer(类<?> columnClass, TableCellRenderer renderer)
TableColumn
中未设置渲染器,则设置要使用的默认单元格渲染器。
如果渲染器为null
,则删除此列类的默认渲染器。
columnClass
- 设置此columnClass的默认单元格渲染器
renderer
- 用于此columnClass的默认单元格渲染器
getDefaultRenderer(java.lang.Class<?>)
,
setDefaultEditor(java.lang.Class<?>, javax.swing.table.TableCellEditor)
public TableCellRenderer getDefaultRenderer(类<?> columnClass)
TableColumn
中未设置渲染器时要使用的单元格渲染器。
在渲染单元格期间,根据列中单元格的类从Hashtable
条目中提取渲染器。
如果没有这个columnClass
的条目,则该方法返回最具体的超类的条目。
该JTable
安装用于条目Object
, Number
和Boolean
,所有这些都可以被修改或替换。
columnClass
- 返回此columnClass的默认单元格渲染器
setDefaultRenderer(java.lang.Class<?>, javax.swing.table.TableCellRenderer)
,
getColumnClass(int)
public void setDefaultEditor(类<?> columnClass, TableCellEditor editor)
TableColumn
中没有设置编辑器,则设置要使用的默认单元格编辑器。
如果表中或表中的特定列不需要编辑,请使用isCellEditable
中的TableModel
方法确保此JTable
不会在这些列中启动编辑器。
如果编辑器是null
,则删除此列类的默认编辑器。
columnClass
- 为此columnClass设置默认单元格编辑器
editor
- 用于此columnClass的默认单元格编辑器
TableModel.isCellEditable(int, int)
,
getDefaultEditor(java.lang.Class<?>)
,
setDefaultRenderer(java.lang.Class<?>, javax.swing.table.TableCellRenderer)
public TableCellEditor getDefaultEditor(类<?> 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)
true
,表TransferHandler
需要为non-null
。
dragEnabled
属性的默认值为false
。
尊重这个属性的工作,并承认用户拖动手势,在于外观和感觉的实现,特别是表TableUI
。 当启用自动拖动处理,大多数的外观和感觉(包括那些子类BasicLookAndFeel
)开始的拖动并且每当用户按下在项上鼠标按钮(在单个选择模式)拖放操作或选择(在其它选择模式)和然后将鼠标移动几个像素。 因此,将此属性设置为true
可以对选择行为如何产生微妙的影响。
如果使用忽略此属性的外观,您仍然可以通过在表exportAsDrag
上调用exportAsDrag
来开始拖放TransferHandler
。
b
- 是否启用自动拖动处理
HeadlessException
- 如果
b
是
true
和
GraphicsEnvironment.isHeadless()
返回
true
GraphicsEnvironment.isHeadless()
, getDragEnabled()
, JComponent.setTransferHandler(javax.swing.TransferHandler)
, TransferHandler
public boolean getDragEnabled()
dragEnabled
属性
setDragEnabled(boolean)
public final void setDropMode(DropMode dropMode)
DropMode.USE_SELECTION
。
但是,为了改善用户体验,建议使用其他模式之一。
例如, DropMode.ON
提供了类似的选择项目的行为,但这样做并不影响表中的实际选择。
JTable
支持以下放置模式:
DropMode.USE_SELECTION
DropMode.ON
DropMode.INSERT
DropMode.INSERT_ROWS
DropMode.INSERT_COLS
DropMode.ON_OR_INSERT
DropMode.ON_OR_INSERT_ROWS
DropMode.ON_OR_INSERT_COLS
如果该组件有TransferHandler
接受丢弃,则丢弃模式才有意义。
dropMode
- 使用的下拉模式
IllegalArgumentException
- 如果下拉模式不受支持或
null
getDropMode()
, getDropLocation()
, JComponent.setTransferHandler(javax.swing.TransferHandler)
, TransferHandler
public final DropMode getDropMode()
setDropMode(javax.swing.DropMode)
public final JTable.DropLocation getDropLocation()
null
如果没有位置是当前被显示。
此方法不适用于从TransferHandler
查询放置位置,因为放置位置仅在TransferHandler
的canImport
已返回并已允许显示位置之后设置。
当此属性更改时,组件将触发名为“dropLocation”的属性更改事件。
setDropMode(javax.swing.DropMode)
,
TransferHandler.canImport(TransferHandler.TransferSupport)
public void setAutoCreateRowSorter(boolean autoCreateRowSorter)
RowSorter
。
当调用setAutoCreateRowSorter(true)
时,将TableRowSorter
创建一个TableRowSorter
并安装在表上。 虽然autoCreateRowSorter
属性仍保留true
,但每次更改模型时,将创建一个新的TableRowSorter
并将其设置为表的行排序。 autoCreateRowSorter
属性的默认值为false
。
autoCreateRowSorter
-无论是否
RowSorter
应自动创建
TableRowSorter
public boolean getAutoCreateRowSorter()
true
如果每当模型更改时,新RowSorter
应创建并安装作为该表的排序;
否则返回false
。
RowSorter
,则为true
public void setUpdateSelectionOnSort(boolean update)
update
- 是否更新排序选择
public boolean getUpdateSelectionOnSort()
public void setRowSorter(RowSorter<? extends TableModel> sorter)
RowSorter
。
RowSorter
用于为RowSorter
提供排序和JTable
。
此方法清除选择并重置任何可变行高。
此方法PropertyChangeEvent
时触发PropertyChangeEvent,属性名称为"rowSorter"
。 为了向后兼容,此方法触发一个额外的事件,其属性名称为"sorter"
。
如果的底层模型RowSorter
从不同之处在于这种JTable
不确定的行为会导致。
sorter
- RowSorter
;
null
转为排序
TableRowSorter
public RowSorter<? extends TableModel> getRowSorter()
public void setSelectionMode(int selectionMode)
注意: JTable
提供了处理列和行选择的所有方法。 当设置状态,如setSelectionMode
,它不仅更新行选择模型的模式,而且还将设置的选择模型相似的价值观columnModel
。 如果要让行和列选择模型以不同的模式运行,请直接进行设置。
行列列选择型号为JTable
默认使用DefaultListSelectionModel
,以便JTable
工作方式与JList
相同。 查看setSelectionMode
的方法JList
有关模式的详细信息。
public void setRowSelectionAllowed(boolean rowSelectionAllowed)
rowSelectionAllowed
- 如果此模型允许行选择,则为true
getRowSelectionAllowed()
public boolean getRowSelectionAllowed()
setRowSelectionAllowed(boolean)
public void setColumnSelectionAllowed(boolean columnSelectionAllowed)
columnSelectionAllowed
- 如果此模型将允许列选择,则为true
getColumnSelectionAllowed()
public boolean getColumnSelectionAllowed()
setColumnSelectionAllowed(boolean)
public void setCellSelectionEnabled(boolean cellSelectionEnabled)
isCellSelected
以更改此默认行为。
该方法等效于设置两个rowSelectionAllowed
属性和columnSelectionAllowed
中的属性columnModel
所提供的值。
cellSelectionEnabled
- 如果允许同时进行行和列选择,则为true
getCellSelectionEnabled()
,
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
在外面[
getRowCount()
-1]
public void setColumnSelectionInterval(int index0, int index1)
index0
到
index1
(包括)的列。
index0
- 间隔的一端
index1
- 间隔的另一端
IllegalArgumentException
- 如果
index0
或
index1
在[
getColumnCount()
-1]之外
public void addRowSelectionInterval(int index0, int index1)
index0
添加到
index1
(包括)到当前选择。
index0
- 间隔的一端
index1
- 间隔的另一端
IllegalArgumentException
- 如果
index0
或
index1
位于[
getRowCount()
-1]之外
public void addColumnSelectionInterval(int index0, int index1)
index0
到
index1
,包容性,为当前选择。
index0
- 间隔的一端
index1
- 间隔的另一端
IllegalArgumentException
- 如果
index0
或
index1
在[
getColumnCount()
-1]之外
public void removeRowSelectionInterval(int index0, int index1)
index0
到
index1
包括)的行。
index0
- 间隔的一端
index1
- 间隔的另一端
IllegalArgumentException
- 如果
index0
或
index1
在[
getRowCount()
-1]之外
public void removeColumnSelectionInterval(int index0, int index1)
index0
到
index1
含)的列。
index0
- 间隔的一端
index1
- 间隔的另一端
IllegalArgumentException
- 如果
index0
或
index1
在外面[
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是第一行),则为true
public boolean isColumnSelected(int column)
column
- 列模型中的列
column
是有效索引并且选择该索引处的列(其中0是第一列),则为true
public boolean isCellSelected(int row, int column)
row
- 正在查询的行
column
- 正在查询的列
row
和
column
是有效索引,则为true,并且选择索引为
(row, column)
的单元格,其中第一行和第一列为索引号0
public void changeSelection(int rowIndex, int columnIndex, boolean toggle, boolean extend)
toggle
和extend
。
由UI接收到的键盘或鼠标事件导致的选择的大部分更改都将通过此方法传递,以便该行为可能被子类覆盖。
某些UI可能需要比此方法提供的更多功能,例如在操纵用于不连续选择的线索时,可能不会调用此方法进行某些选择更改。
此实现使用以下约定:
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)
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)
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)
equals
进行比较时,返回标识符等于
identifier
的表中的列的
TableColumn
对象。
identifier
- 标识符对象
TableColumn
对象
IllegalArgumentException
- 如果
identifier
是
null
或否
TableColumn
有这个标识符
public int convertColumnIndexToModel(int viewColumnIndex)
viewColumnIndex
到表模型中的列的索引viewColumnIndex
。
返回模型中相应列的索引。
如果viewColumnIndex
小于零,则返回viewColumnIndex
。
viewColumnIndex
- 视图中列的索引
convertColumnIndexToView(int)
public int convertColumnIndexToView(int modelColumnIndex)
modelColumnIndex
到视图中的列的索引modelColumnIndex
。
返回视图中相应列的索引;
如果此列未显示,则返回-1。
如果modelColumnIndex
小于零,返回modelColumnIndex
。
modelColumnIndex
- 模型中列的索引
convertColumnIndexToModel(int)
public int convertRowIndexToView(int modelRowIndex)
TableModel
映射行的索引。
如果模型的内容没有被排序,模型和视图索引是相同的。
modelRowIndex
- 该行的索引在模型方面
IndexOutOfBoundsException
- 如果排序启用,并将索引传递到
TableModel
的行数
TableModel
TableRowSorter
public int convertRowIndexToModel(int viewRowIndex)
TableModel
。
如果模型的内容没有被排序,模型和视图索引是相同的。
viewRowIndex
- 视图中行的索引
IndexOutOfBoundsException
- 如果排序启用,并通过方法
getRowCount
确定的
JTable
范围之外的索引
TableRowSorter
, getRowCount()
public int getRowCount()
JTable
中可以显示的行数,给定无限空间。
如果RowSorter
了带有过滤器的RowSorter,则返回的行数可能与底层TableModel
的行数有所不同。
JTable
getColumnCount()
public int getColumnCount()
getRowCount()
,
removeColumn(javax.swing.table.TableColumn)
public String getColumnName(int column)
column
在视图中显示的列的
column
。
column
- 正在查询的视图中的列
column
处的列的名称
public 类<?> getColumnClass(int column)
column
在视图中显示的列的
column
。
column
- 正在查询的视图中的列
column
处的列的类型
public 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
- 要查询其值的行
public void addColumn(TableColumn aColumn)
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
所在列的索引,如果结果不在[
getColumnCount()
-1]范围内,则
getColumnCount()
-1。
point
- 感兴趣的位置
point
所在列的索引,如果结果不在[
getColumnCount()
-1]范围内,
getColumnCount()
-1
rowAtPoint(java.awt.Point)
public int rowAtPoint(Point point)
point
位于的行的索引,如果结果不在[
getRowCount()
-1]范围内,则
getRowCount()
-1。
point
- 感兴趣的位置
point
所在行的索引,如果结果不在[
getRowCount()
-1]范围内,
getRowCount()
-1
columnAtPoint(java.awt.Point)
public Rectangle getCellRect(int row, int column, boolean includeSpacing)
row
和column
处的单元格的column
。
如果includeSpacing
为true,则返回的值具有指定的行和列的完整高度和宽度。
如果它是假的,则返回的矩形由单元间距插入,以返回呈现或编辑组件的真实边界,因为它将在渲染期间设置。
如果列索引有效但是行索引小于零,则该方法返回一个矩形,其中y
和height
值被适当地设置,并且x
和width
都被设置为零。 通常,当行或列索引指示在适当范围之外的单元格时,该方法返回一个矩形,该矩形描绘了表范围内最近单元格的最近边。 当行索引和列索引超出范围时,返回的矩形覆盖最近单元格的最近点。
在所有情况下,使用此方法计算一个轴的结果的计算不会因为沿着另一个轴的计算异常而失败。 当单元格无效时, includeSpacing
参数将被忽略。
row
- 所需单元格所在的行索引
column
- 所需单元格位于显示中的列索引;
这不一定与表的数据模型中的列索引相同;
convertColumnIndexToView(int)
方法可用于将数据模型列索引转换为显示列索引
includeSpacing
- 如果为false,则返回真实单元格边界 - 通过从列和行模型的高度和宽度中减去单元格间距来计算
row
column
getIntercellSpacing()
public void doLayout()
JTable
的列的总宽度等于表的宽度。
在布局开始之前,该方法获得resizingColumn
的tableHeader
。 当调用该方法调整封闭窗口的大小时, resizingColumn
为null
。 这意味着调整大小已经发生在JTable
,而更改 - 或“delta” - 应该分配给所有的列,而不管这个JTable
的自动调整大小模式。
如果resizingColumn
不是null
,它是表中已经改变了大小而不是表本身的列之一。 在这种情况下,自动调整大小模式控制在可用列之间分配额外(或赤字)空间的方式。
模式是:
Viewport
的宽度时,使用水平滚动条来容纳列。 如果JTable
未包含在JScrollPane
则可能会使部分表不可见。 JTable
,包括正在调整所述一个。 注意:当JTable
对列的宽度进行调整时,它绝对遵守其最小值和最大值。 因此,即使在调用此方法之后,列的总宽度仍然不等于表的宽度。 当这种情况发生时, JTable
不会将自身置于AUTO_RESIZE_OFF模式,以启动滚动条,或者打破其当前自动调整大小模式的其他承诺 - 而是允许其边界设置为大于(或更小)列的最小值或最大值,意味着没有足够的空间来显示所有列,或者列不会填满JTable
的边界。 这些分别导致在绘画过程中JTable
的背景颜色的一些列或区域的剪裁。
在可用列中分配增量的机制以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。
对这里给出的公式的初步评估将受到在有限精度(使用ints)中进行此操作而导致的总体舍入误差。 为了处理这个问题,上面的乘法因子是不断重新计算的,这也考虑了以前迭代中的舍入误差。 结果是产生一组整数的targetSize
,其值与所提供的targetSize
精确相加,并且通过将舍入误差均匀地扩展到给定的元素上来实现。
当targetSize
超出[MIN,MAX]范围时,算法将所有大小设置为其适当的极限值(最大值或最小值)。
@Deprecated public void sizeColumnsToFit(boolean lastColumnOnly)
doLayout()
取代。
doLayout()
public void sizeColumnsToFit(int resizingColumn)
doLayout()
方法。
resizingColumn
- 如果没有此列,调整大小进行此调整的列或-1
doLayout()
public String getToolTipText(MouseEvent event)
JComponent
的getToolTipText
方法,以便允许渲染器的提示被使用,如果它有文本集。
注意:对于JTable
,要正确显示其渲染JTable
工具提示JTable
必须是已注册的组件与ToolTipManager
。 这是在initializeLocalVars中initializeLocalVars
完成的,但如果稍后点JTable
被告知setToolTipText(null)
它将取消注册表组件,并且渲染器中的任何提示将不再显示。
getToolTipText
在
JComponent
JComponent.getToolTipText()
public void setSurrendersFocusOnKeystroke(boolean surrendersFocusOnKeystroke)
surrendersFocusOnKeystroke
- 如果编辑器在击键导致编辑器被激活时得到焦点,则为true
getSurrendersFocusOnKeystroke()
public boolean getSurrendersFocusOnKeystroke()
setSurrendersFocusOnKeystroke(boolean)
public boolean editCellAt(int row, int column)
row
方式开始编辑单元格row
和column
,并且这些索引的单元格是可编辑的。
请注意,这是一个方便的方法editCellAt(int, int, null)
。
row
- 要编辑的行
column
- 要编辑的列
public boolean editCellAt(int row, int column, EventObject e)
row
方式开始编辑单元格row
和column
,并且这些索引处的单元格是可编辑的。
为防止JTable
编辑特定表,列或单元格值,请从isCellEditable
中的TableModel
方法返回false。
row
- 要编辑的行
column
- 要编辑的列
e
- 传递到shouldSelectCell
事件;
请注意,从Java 2平台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对象。
updateUI
在
JComponent
JComponent.updateUI()
public String getUIClassID()
getUIClassID
在
JComponent
类
JComponent.getUIClassID()
,
UIDefaults.getUI(javax.swing.JComponent)
public void setModel(TableModel dataModel)
newModel
,并将其注册为来自新数据模型的侦听器通知。
dataModel
- 此表的新数据源
IllegalArgumentException
- 如果
newModel
是
null
getModel()
public TableModel getModel()
TableModel
提供此显示的数据
JTable
。
TableModel
提供了这个
JTable
显示的数据
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 sorterChanged(RowSorterEvent e)
RowSorterListener
通知,
RowSorter
已经改变了某种方式。
sorterChanged
在接口
RowSorterListener
e
- 描述
RowSorterEvent
RowSorterEvent
NullPointerException
- 如果
e
是
null
public void tableChanged(TableModelEvent e)
TableModel
生成一个TableModelEvent
时调用。
TableModelEvent
应在模型的坐标系中构建;
适当的映射到视图的坐标系被该执行JTable
当它接收到该事件。
应用程序代码不会明确使用这些方法,它们由JTable
使用JTable
。
请注意,从1.3开始,此方法将清除选择(如果有)。
tableChanged
在界面
TableModelListener
public void columnAdded(TableColumnModelEvent e)
应用程序代码不会明确使用这些方法,它们在JTable内部使用。
columnAdded
在界面
TableColumnModelListener
TableColumnModelListener
public void columnRemoved(TableColumnModelEvent e)
应用程序代码不会明确使用这些方法,它们在JTable内部使用。
columnRemoved
在界面
TableColumnModelListener
TableColumnModelListener
public void columnMoved(TableColumnModelEvent e)
应用程序代码不会明确使用这些方法,它们在JTable内部使用。
columnMoved
在界面
TableColumnModelListener
e
- 收到的事件
TableColumnModelListener
public void columnMarginChanged(ChangeEvent e)
应用程序代码不会明确使用这些方法,它们在JTable内部使用。
columnMarginChanged
在界面
TableColumnModelListener
e
- 收到的事件
TableColumnModelListener
public void columnSelectionChanged(ListSelectionEvent e)
TableColumnModel
改变。
应用程序代码不会明确使用这些方法,它们在JTable内部使用。
columnSelectionChanged
在界面
TableColumnModelListener
e
- 收到的事件
TableColumnModelListener
public void valueChanged(ListSelectionEvent e)
应用程序代码不会明确使用这些方法,它们在JTable内部使用。
valueChanged
在接口
ListSelectionListener
e
- 收到的事件
ListSelectionListener
public void editingStopped(ChangeEvent e)
应用程序代码不会明确使用这些方法,它们在JTable内部使用。
editingStopped
在界面
CellEditorListener
e
- 收到的事件
CellEditorListener
public void editingCanceled(ChangeEvent e)
应用程序代码不会明确使用这些方法,它们在JTable内部使用。
editingCanceled
在接口
CellEditorListener
e
- 收到的事件
CellEditorListener
public void setPreferredScrollableViewportSize(Dimension size)
size
- 一个
Dimension
对象,指定
preferredSize
的一个
JViewport
,其视图是此表
Scrollable.getPreferredScrollableViewportSize()
public Dimension getPreferredScrollableViewportSize()
getPreferredScrollableViewportSize
在接口
Scrollable
Dimension
对象,其中包含
preferredSize
的
JViewport
显示此表
Scrollable.getPreferredScrollableViewportSize()
public int getScrollableUnitIncrement(Rectangle visibleRect, int orientation, int direction)
每次用户请求单位滚动时调用此方法。
getScrollableUnitIncrement
在接口
Scrollable
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)起,返回的值将确保视口在行边界上完全对齐。
getScrollableBlockIncrement
在界面
Scrollable
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。
getScrollableTracksViewportWidth
在界面
Scrollable
autoResizeMode
设置为
AUTO_RESIZE_OFF
,否则返回true
Scrollable.getScrollableTracksViewportWidth()
public boolean getScrollableTracksViewportHeight()
false
以表示视口的高度不能确定表的高度,除非
getFillsViewportHeight
为
true
,而表的首选高度小于视口的高度。
getScrollableTracksViewportHeight
在接口
Scrollable
false
,除非
getFillsViewportHeight
是
true
,并且表需要拉伸以填充视口
Scrollable.getScrollableTracksViewportHeight()
,
setFillsViewportHeight(boolean)
,
getFillsViewportHeight()
public void setFillsViewportHeight(boolean fillsViewportHeight)
false
。
fillsViewportHeight
- 此表是否总是足够大以填充封闭视口的高度
getFillsViewportHeight()
,
getScrollableTracksViewportHeight()
public boolean getFillsViewportHeight()
setFillsViewportHeight(boolean)
protected boolean processKeyBinding(KeyStroke ks, KeyEvent e, int condition, boolean pressed)
JComponent
ks
作为的结果KeyEvent
e
。
获得适当的InputMap
,获取绑定,从ActionMap
获取操作,然后(如果发现操作并且组件已启用)将调用notifyAction
通知操作。
processKeyBinding
在
JComponent
类
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()
null
如果该表当前没有被编辑。
TableCellEditor
做编辑,或
null
如果表当前没有编辑。
cellEditor
,
getCellEditor(int, int)
public void setCellEditor(TableCellEditor anEditor)
anEditor
- 活动单元格编辑器
cellEditor
public void setEditingColumn(int aColumn)
editingColumn
变量。
aColumn
- 要编辑的单元格的列
editingColumn
public void setEditingRow(int aRow)
editingRow
变量。
aRow
- 要编辑的单元格行
editingRow
public TableCellRenderer getCellRenderer(int row, int column)
TableColumn
具有非空渲染器,则返回。
如果没有,请查找此列中的数据类(使用getColumnClass
),并返回此类型数据的默认渲染器。
注意:在整个表包中,内部实现总是使用此方法来提供渲染器,以便这个默认行为可以被一个子类安全地覆盖。
row
- 要呈现的单元格行,其中0是第一行
column
- 要呈现的单元格的列,其中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
)。
在打印操作期间,此方法将配置渲染器,而不指示选择或对焦,以防止它们出现在打印输出中。 要根据是否打印表进行其他自定义,可以在此处或自定义渲染器中检查JComponent.isPaintingForPrint()
的值。
注意:在整个表包中,内部实现总是使用此方法来准备渲染器,以便这个默认行为可以被一个子类安全地覆盖。
renderer
-
TableCellRenderer
准备
row
- 要渲染的单元格行,其中0是第一行
column
- 要呈现的单元格的列,其中0是第一列
Component
下的活动地点
public TableCellEditor getCellEditor(int row, int column)
row
和column
的单元格返回适当的编辑器。
如果此列的TableColumn
具有非空编辑器,则返回。
如果没有,请查找此列中的数据类(使用getColumnClass
),并返回此类型数据的默认编辑器。
注意:在整个表包中,内部实现总是使用此方法来提供编辑器,以便这个默认行为可以被子类安全地覆盖。
row
- 要编辑的单元格行,其中0是第一行
column
- 要编辑的单元格列,其中0是第一列
null
返回这种类型的单元格的默认编辑器
DefaultCellEditor
public Component prepareEditor(TableCellEditor editor, int row, int column)
row
, column
。
注意:在整个表包中,内部实现总是使用此方法来准备编辑器,以便这个默认行为可以被一个子类安全地覆盖。
editor
-
TableCellEditor
设置
row
- 要编辑的单元格行,其中0是第一行
column
- 要编辑的单元格列,其中0是第一列
Component
public void removeEditor()
protected String paramString()
null
。
paramString
在
JComponent
public boolean print() throws PrinterException
JTable
模式PrintMode.FIT_WIDTH
,没有页眉或页脚文本。
在打印期间将显示具有中止选项的模态进度对话框。
注意:在无头模式下,默认打印机上不显示任何对话框和打印。
SecurityException
- 如果此线程不允许启动打印作业请求
PrinterException
- 如果打印系统中的错误导致作业中止
print(JTable.PrintMode, MessageFormat, MessageFormat, boolean, PrintRequestAttributeSet, boolean, PrintService)
,
getPrintable(javax.swing.JTable.PrintMode, java.text.MessageFormat, java.text.MessageFormat)
public boolean print(JTable.PrintMode printMode) throws PrinterException
JTable
,没有页眉或页脚文本。
在打印期间将显示具有中止选项的模态进度对话框。
注意:在无头模式下,默认打印机上不显示任何对话框和打印。
printMode
- 可打印应使用的打印模式
SecurityException
- 如果此线程不允许启动打印作业请求
PrinterException
- 如果打印系统中的错误导致作业中止
print(JTable.PrintMode, MessageFormat, MessageFormat, boolean, PrintRequestAttributeSet, boolean, PrintService)
,
getPrintable(javax.swing.JTable.PrintMode, java.text.MessageFormat, java.text.MessageFormat)
public boolean print(JTable.PrintMode printMode, MessageFormat headerFormat, MessageFormat footerFormat) throws PrinterException
JTable
。
在打印期间将显示具有中止选项的模态进度对话框。
注意:在无头模式下,默认打印机上不显示任何对话框和打印。
printMode
- 可打印应使用的打印模式
headerFormat
- 一个
MessageFormat
指定要在打印头中使用的文本,否则为null
footerFormat
- 指定要在打印页脚中使用的文本的
MessageFormat
,否则为null
SecurityException
- 如果此线程不允许启动打印作业请求
PrinterException
- 如果打印系统中的错误导致作业中止
print(JTable.PrintMode, MessageFormat, MessageFormat, boolean, PrintRequestAttributeSet, boolean, PrintService)
,
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
print
方法指定打印此表,默认打印机指定为打印服务。
printMode
- 可打印应使用的打印模式
headerFormat
- a
MessageFormat
指定要在打印头中使用的文本,或
null
for none
footerFormat
- a
MessageFormat
指定要在打印页脚中使用的文本,或
null
无
showPrintDialog
- 是否显示打印对话框
attr
- 一个
PrintRequestAttributeSet
指定任何打印属性,或
null
无
interactive
- 是否以交互模式进行打印
HeadlessException
- 如果方法被要求显示打印对话框或交互式运行,并且
GraphicsEnvironment.isHeadless
返回
true
SecurityException
- 如果此线程不允许启动打印作业请求
PrinterException
- 如果打印系统中的错误导致作业中止
print(JTable.PrintMode, MessageFormat, MessageFormat, boolean, PrintRequestAttributeSet, boolean, PrintService)
,
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, PrintService service) throws PrinterException, HeadlessException
JTable
。
采取步骤,大多数开发人员将采取以打印JTable
。
简而言之,它准备表,调用getPrintable
获取适当的Printable
,然后将其发送到打印机。
boolean
参数允许您指定是否向用户显示打印对话框。 如果是,用户可以使用对话框来更改目的地打印机或打印属性,甚至取消打印。 另外两个参数允许指定一个PrintService
和打印属性。 这些参数可用于为打印对话框提供初始值,也可用于在对话框未显示时指定值。
第二个boolean
参数允许您指定是否以交互模式执行打印。 如果true
,在true
期间会显示一个模式进度对话框(带有中止选项)。 此对话框还可以防止可能影响表的任何用户操作。 但是,它不能阻止表被代码修改(例如,使用SwingUtilities.invokeLater
发布更新的另一个线程)。 因此,开发人员有义务确保在打印期间无其他代码以任何方式修改表(无效修改包括:大小,渲染器或底层数据中的更改)。 打印时表格更改时打印行为未定义。
如果false
参数指定了false,则不会显示任何对话框,并且事件发送线程上将立即开始打印。 这将阻止任何其他事件(包括重绘)被处理直到打印完成。 尽管这有效地防止了表的更改,但它并没有提供良好的用户体验。 出于这个原因,指定false
从没有可见的GUI的应用程序进行打印时仅建议。
注意:尝试在无头模式下显示打印对话框或以交互方式运行时,将导致HeadlessException
。
在获取可打印的文件之前,如果需要,此方法会正常终止编辑,以防止编辑器在打印结果中显示。 此外, JTable
将在打印期间准备其渲染器,以便不指示选择和重点。 至于定制表进一步的外观在打印输出,开发者可以提供上的价值实现条件自定义渲染或油漆代码JComponent.isPaintingForPrint()
。
有关如何打印表的更多说明,请参阅getPrintable(javax.swing.JTable.PrintMode, java.text.MessageFormat, java.text.MessageFormat)
。
printMode
- 可打印应使用的打印模式
headerFormat
- 一个
MessageFormat
指定要用于打印标题的文本,或
null
为无
footerFormat
- 指定要在打印页脚中使用的文本的
MessageFormat
,否则为
null
showPrintDialog
- 是否显示打印对话框
attr
- 一个
PrintRequestAttributeSet
指定任何打印属性,或
null
无
interactive
- 是否以交互模式进行打印
service
- 目的地
PrintService
或
null
使用默认打印机
HeadlessException
- 如果方法被要求显示打印对话框或交互式运行,并且
GraphicsEnvironment.isHeadless
返回
true
SecurityException
- 如果存在安全管理员,并且其
SecurityManager.checkPrintJobAccess()
方法不允许此线程创建打印作业请求
PrinterException
- 如果打印系统中的错误导致作业中止
getPrintable(javax.swing.JTable.PrintMode, java.text.MessageFormat, java.text.MessageFormat)
,
GraphicsEnvironment.isHeadless()
public Printable getPrintable(JTable.PrintMode printMode, MessageFormat headerFormat, MessageFormat footerFormat)
Printable
用于打印此JTable。
这种方法是为希望自定义默认的那些Printable
通过使用实施JTable
的print
方法。 想要简单地打印表的开发人员应该直接使用这些方法之一。
该Printable
可以要求在两种打印模式的一个。 在这两种模式下,它会跨多个页面顺序地传播表格行,每页适合尽可能多的行。 PrintMode.NORMAL
指定表以当前大小打印。 在这种模式下,可能需要以类似于行的方式在页面之间传播列。 当需要时,列按照与表ComponentOrientation
的顺序ComponentOrientation
。 PrintMode.FIT_WIDTH
指定输出缩放比较小,如有必要,以适应每个页面上的表的整个宽度(从而所有列)。 宽度和高度相等地缩放,保持输出的宽高比。
Printable
将每个页面上的表格部分以表JTableHeader
的相应部分JTableHeader
,如果有的话。
标题和页脚文本可以通过提供MessageFormat
参数添加到输出。 打印代码从格式请求字符串,提供可能包含在格式化字符串中的单个项目:表示当前页面编号的Integer
。
鼓励您阅读MessageFormat的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
被包装在另一个中是完全有效的。 您甚至可以要求将不同的页面呈现到不同大小的可打印区域。 实施必须准备好处理这个问题(可能通过在飞行中进行布局计算)。 然而,当需要在各个页面之间传播列时,为每个页面提供不同的高度可能不会很好地与PrintMode.NORMAL
使用。
在定制打印结果的表格方面, JTable
本身将在打印期间保留隐藏选择和对焦。 对于其他自定义,您的渲染器或绘画代码可以根据JComponent.isPaintingForPrint()
的值自定义外观
此外, 在调用此方法之前,您可能希望首先修改表的状态,例如取消单元格编辑或使用户的表格适当。 但是,在提取Printable
之后 ,您不能修改表的状态(无效修改包括大小或底层数据的更改)。 表格更改后,返回的Printable
的行为是未定义的。
printMode
- 可打印应使用的打印模式
headerFormat
- 一个
MessageFormat
指定要在打印头中使用的文本,否则为null
footerFormat
- 指定要在打印页脚中使用的文本的
MessageFormat
,否则为null
Printable
打印这个JTable
print(JTable.PrintMode, MessageFormat, MessageFormat, boolean, PrintRequestAttributeSet, boolean)
, Printable
, PrinterJob
public AccessibleContext getAccessibleContext()
getAccessibleContext
在界面
Accessible
getAccessibleContext
在
Component