编辑器中文本框(Text)动态放大缩小

本文介绍如何使用SWT库创建一个带有文本框的用户界面,并实现文本框的动态放大和缩小功能。通过添加一个下拉箭头按钮,当选择放大或缩小时,调整Text组件的大小。在widgetSelected事件中,改变GridData的属性以改变文本框的尺寸,并调用reflow方法更新布局,确保滚动条和界面显示正常。

 

Text txt = new Text(parent, SWT.BORDER | SWT.H_SCROLL | SWT.V_SCROLL);

 

// 文本框放大/缩小按钮

final Button zoomBtn = new Button(groupBasicInfo, SWT.ARROW);

zoomBtn.setAlignment(SWT.DOWN);

GridDataFactory.swtDefaults().align(SWT.BEGINNING, SWT.TOP).applyTo(zoomBtn);

 

zoomBtn.addSelectionListener(new SelectionAdapter() {

@Override

public void widgetSelected(SelectionEvent e) {

int align = zoomBtn.getAlignment();

if ((align & SWT.UP) != 0) {

GridDataFactory.swtDefaults().align(SWT.FILL, SWT.CENTER)

.grab(true,false).span(4, 2).hint(50, 50).applyTo(txtComment);

} else if ((align & SWT.DOWN) != 0) {

GridDataFactory.swtDefaults().align(SWT.FILL, SWT.CENTER)

.grab(true,false).span(4, 2).hint(50, 250).applyTo(txtComment);

}

reflow(parent);

zoomBtn.setAlignment((align & SWT.DOWN) != 0 ? SWT.UP : SWT.DOWN);

}

 

/**

 * Reflows this text's parent and all the parents up the hierarchy until a

 * SharedScrolledComposite is reached.

 */

protected void reflow(Composite comp) {

Composite c = comp;

while (c != null) {

c.setRedraw(false);

c = c.getParent();

if (c instanceof SharedScrolledComposite || c instanceof Shell) {

break;

}

}

 

c = comp;

while (c != null) {

c.layout(true);

c = c.getParent();

if (c instanceof SharedScrolledComposite) {

((SharedScrolledComposite) c).reflow(true);

break;

}

}

 

c = comp;

while (c != null) {

c.setRedraw(true);

c = c.getParent();

if (c instanceof SharedScrolledComposite || c instanceof Shell) {

break;

}

}

}

});

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值