软件开发

当前位置:首页 > 软件开发

《Java核心技术高级特性》(第六章)(续)

6.2.3对行和列的操作

在本小节中,你会看到怎样操作-一个表格中的行和列。在你阅读本材料的整个过程中,

要牢记Swing中的表格是相当不对称的,也就是你可以实施的行操作和列操作会有所不同。

表格构件已经被优化过,以便能够显示具有相同结构的行信息,例如,--次数据库查询的结

果,而不是任意的二维对象表格。你将会看到,这种不对称性贯穿于本小节。

1.各种列类

在下一个示例中,我们将再次展示行星数据,不过这次我们会给出更多的有关表格列类

型的信息。这是通过在表格模型中定义下面这个方法来实现的:

Class<?> getColumClass(int columnIndex)

这个方法可以返回一个描述列类型的类。JTable类会为该类选取合适的绘制器,表6-1 显示了

默认的绘制动作。

可以在图6-9中看到复选框和图像。(感谢JimEvins提供了这些行星图像,网址为: htp://www.snaught.com/

JimsCoollcons/Planetso)要绘制其他类型,需要安装定制的绘制器,请参见第6.2.4节。

新梦想IT职业教育

2.访问表格列JTab1e类将有关表格列的信息存放在类型为Tab1eCo1umn的对象中,由一个

Tab1 eCo1 umnMode1对象负责管理这些列。(图6-10展示了最重要的表格类之间的关系。)如

果不想动态地插,入或删除,那么最好不要过多地使用表格列模型。列模型最常见的用法是直

接获取- -个Tab1eColumn对象:

int columnIndex= 。。;
TableColumn colunn = table.qetColumModel 0. qetColumn(columnIndex):

新梦想IT职业教育

3.改变列的大小

TableColumn类可以控制更改列的大小的行为。使用下面这些方法,可以设置首选的、

最小的以及最大的宽度:

void setPreferredwidth(int width)
void setMinlfidth(int width)
void setMaxWidth(int width)

这些信息将提供给表格构件,以便对列进行布局。

使用方法

void setResizab1e(boolean resizable)

可以控制是否允许用户改变列的大小。

可以使用下面这个方法在程序中改变列的大小:

void setridth(int midth)

当调整了一个列的大小时,默认情况下表格的总体大小会保持不变。当然,更改过大小

的列的宽度的增加值或减小值会分摊到其他列上。默认方式是更改那些在被改变大小列右边

的所有列的大小。这是一种很好的默认方式,因为这样使得用户可以通过将所有列从左到右

移动,将它们调整为自己所期望的宽度。

使用下面这个方法,可以设置表6-2中列出的其他行为:

void setAutoResizeMode(int mode)

新梦想IT职业教育


4.改变行的大小

行的高度是直接由JTable类管理的。如果单元格比默认值高,那么可以像下面这样设

置行的高度:

tble.setRowHeight(height);

默认情况下,表格中的所有行都具有相同的高度,可以用下面的调用来为每一行单独设

置高度:

table.setRowWHeight(row height);

实际的行高度等于用这些方法设置的行高度减去行边距,其中行边距的默认值是1个像

素,但是可以通过下面的调用来修改它:

table.setRoMargin(margin);

5.选择行、列和单元格

利用不同的选择模式,用户可以分别选择表格中的行、列或者单独的单元格。默认情况

下,可能的是行选择,点击一个单元格的内部就可以选择整行(参见图6-9)。调用

table. setRowselectinllowed(false)

可以禁用行选择。

当行选择功能可用时,可以控制用户是否可以选择单- -行、连续几行或者任意几行。此

时,需要获取选择模式,然后调用它的setSe1 ecti onMode方法:

tablegetSelectionModel0 selecode(rode);

在这里,mode是下面三个值的其中- -个:

ListSelectionMode1 .SINCLE SELECTION
ListSelectionModel .SINGLE _INTERVAL SELECTION
ListSelectionModel .MULTIPLE INTERVAL SELECTION

默认情况下,列选择是禁用的。不过可以调用下面这个方法启用列选择:

tablectCumSectionlowed(true)

同时启用行选择和列选择等价于使单元格选择可用,这样用户就可以选择一定范围内的

单元格(参见图6-11 )。也可以使用下面的调用完成这项设置:

table. setCel1SelectionEnabled(true)

可以运行程序清单6-7中的程序,观察一下单元格选择的运行情况。启用Selection菜单

中的行、列或单元格选项,然后观察选择行为是如何改变的。

新梦想IT职业教育


相关内容

文章评论

表情

共 0 条评论,查看全部
  • 这篇文章还没有收到评论,赶紧来抢沙发吧~