java增加数据库字段_数据库字段的显示以及增加

本文介绍了如何在Java中利用布局和EditPolicy实现数据库表(TableFigure)和字段(ColumnFigure)的图形显示。首先,通过使用Label显示表名,然后利用ToolbarLayout布局管理器来维护字段容器的位置。接着,创建ColumnFigure作为字段图形,并通过创建CreationToolEntry和DbCreationFactory实现在工具面板上生成Table和Column。最后,通过FlowLayoutEditPolicy实现Column在Table中的插入,并处理创建Command,完成数据库字段的动态添加。
摘要由CSDN通过智能技术生成

隔了将近一个月,我终于可以在家上网了——我又回来了。由于搬家后没有网上,本来这篇应该早就写完的文章也只能拖了这么久才“发布”。

在这一章,我说一下如何去利用布局,以及其他一些关于EditPolicy的用法和Palette的实现。说明一下,示例代码和本章内容中的代码有出入,这是因为以前我是做一点写一点,这次我完成得比较多,但是由于涉及技术有一些差异,所以我将分成两篇文章讲完,我建议大家看完第5章后再下代码。代码下载.

1.重新显示TableFigure

上一章中,我们简单地绘制了一个矩形,充当我们的数据库表的图形,现在让我们重新想想,如何显示这个TableFigure。

让我们看看Visio里面是怎么显示的吧:

bcfb9c59cf235aba9de31db439b85f9f.gif

我们也按照它的样子做一个类似的!

首先,我们需要显示我们的表名,其次,我们要将数据字段显示在表名下放的区域中,然后再在表名和存放数据库字段的区域之间画一条线,分割开。看下图:

a8ac50d5ab0a3326c906812278546315.gif

看来我们以前写的TableFigure还差太远,仅仅一个矩形还不够。

先考虑一下如何显示表名。在TableFigure中显示一条文字很容易的,简单的方法就是在绘制它的时候,利用Graphics的drawText方法即可,但是这样做很繁琐,需要不停的计算表名显示位置,并且,当我们的表名发生改变的时候,表自身大小该如何调节呢。所以我们需要利用Label来显示,因为Label可以很容易地对显示的表名进行维护,包括计算文字长度获得Figure该具有的大小等;此外,当我们使用Label来显示的话, TableFigure还可以通过布局管理器来计算自己当前的大小,这又省得我们自己计算了。打开TableFigure类,增加以下代码:

public

TableFigure(Table model) {

super();

this

.model

=

model;

tableNameLabel

=

new

Label();

tableNameLabel.setText(model.getTableName());

FontData fd

=

new

FontData();

fd.setHeight(

10

);

fd.setName(

"

Arial

"

);

fd.setStyle(SWT.BOLD);

tableNameLabel.setFont(

new

Font(

null

, fd));

tableNameLabel.setIcon(ImageProvider.TABLE_ICON.createImage());

tableNameLabel.setLabelAlignment(PositionConstants.MIDDLE);

//

留出一点边距,会好看点

this

.setBorder(

new

MarginBorder(

8

,

8

,

8

,

8

));

this

.add(tableNameLabel);

this

.setOpaque(

true

);

}

我们在TableFigure创建的时候,给它生成了一个Label,然后将这个Label作为TableFigure的子Figure添加到它上面,这样一来我们就让这个Label来显示数据表名。上面代码中用到了图片设置以及字体设置,这里我们只讨论GEF,所以就不讨论他们了。

名字能显示了,现在该让我们的字段容器出场了!

字段的图形需要有容器去维护显示它,刚才我们也看到了,Visio中的字段都是在字段容器中自上而下有序地排列在一起的,问题就来了:怎么去让它们如此听话地有序排列呢。布局管理器(LayoutManager),只要做过桌面应用的人都知道,不错,Draw2D也是利用布局管理器来对图形进行位置大小进行维护的。在Draw2D中有一个名为ToolbarLayout的布局管理器,它实现了让Figure自上而下有序地排列在一起,这正是我们需要的!

现在让我们在TableFigure构造函数中增加以下代码:

containerFigure

=

new

Figure() ;

ToolbarLayout tableLayout

=

new

ToolbarLayout();

//

承载Column Figure的容器是ToolbarLayout

ToolbarLayout containerLayout

=

new

ToolbarLayout();

containerLayout.setMinorAlignment(ToolbarLayout.ALIGN_BOTTOMRIGHT);

containerFigure.setLayoutManager(containerLayout);

this

.add(containerFigure);

这样我们的containerFigure就做好了。

但是光这样还不够。containerFigure 和tableNamelable这两个Figure作为TableFigure的子图形,应该显示在哪儿呢?怎么给他们定位?而且&#

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值