用Swing开发GUI程序(六)JTable

来源:互联网 发布:地球大炮 知乎 编辑:程序博客网 时间:2024/06/05 17:14

JTable 用来显示和编辑常规二维单元表。有关面向任务的文档和使用 JTable 的示例

构造方法
这里写图片描述

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

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

下面的一些字段属性可以让你自己定义一下外观样式

AUTO_RESIZE_OFF

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

AUTO_RESIZE_NEXT_COLUMN

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

AUTO_RESIZE_SUBSEQUENT_COLUMNS

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

AUTO_RESIZE_LAST_COLUMN

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

AUTO_RESIZE_ALL_COLUMNS

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

dataModel

protected TableModel dataModel
表的 TableModel。

columnModel

protected TableColumnModel columnModel
表的 TableColumnModel。

selectionModel

protected ListSelectionModel selectionModel
表的 ListSelectionModel,用来追踪行选择。

tableHeader

protected JTableHeader tableHeader
表所使用的 TableHeader。

rowHeight

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

rowMargin

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

gridColor

protected Color gridColor
网格的颜色。

showHorizontalLines

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

showVerticalLines

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

autoResizeMode

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

autoCreateColumnsFromModel

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

preferredViewportSize

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

rowSelectionAllowed

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

cellEditor

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

editingColumn

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

editingRow

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

defaultRenderersByColumnClass

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

defaultEditorsByColumnClass

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

selectionForeground

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

selectionBackground

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