扩展SWT带标签的Text控件
参考其他扩展控件的方法实现,其实就是多个基本控件的组合使用。按照这个方法可以扩展出其他控件。
?
扩展控件代码:
package com.strong.extend;import org.eclipse.swt.SWT;public class StrongText extends Composite { private Text text; private Label label; private int labelWidthHint = 100; private String labelStr = "Label"; private String textStr = ""; public StrongText(Composite parent, int style, int intWidthHint) { super(parent, style); this.labelWidthHint = intWidthHint; initComposite(); } public StrongText(Composite parent, int style) { super(parent, style); initComposite(); } private void initComposite() { FillLayout thisLayout = new FillLayout(SWT.NONE); setLayout(thisLayout); Composite composite = new Composite(this, SWT.NONE); GridLayout compositeLayout = new GridLayout(2, false); compositeLayout.marginTop = -5; compositeLayout.marginLeft = -5; compositeLayout.marginRight = -5; composite.setLayout(compositeLayout); label = new Label(composite, SWT.NONE); label.setText(labelStr); GridData labelGridData = new GridData(); labelGridData.verticalAlignment = SWT.CENTER; labelGridData.grabExcessVerticalSpace = true; labelGridData.horizontalAlignment = SWT.FILL; labelGridData.widthHint = labelWidthHint; label.setLayoutData(labelGridData); text = new Text(composite, SWT.BORDER); text.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 1, 1)); text.setText(textStr); this.layout(); } public String getLabelStr() { return labelStr; } public void setLabelStr(String labelStr) { this.labelStr = labelStr; label.setText(this.labelStr); } public String getTextStr() { return textStr; } public void setTextStr(String textStr) { this.textStr = textStr; text.setText(this.textStr); }}
?扩展控件SWT可视化编辑界面
实际应用代码
StrongText textXianLuGuoLv = new StrongText(groupXianLuLieBiao, SWT.NONE, 60); textXianLuGuoLv.setTextStr(""); textXianLuGuoLv.setBounds(10, 21, 165, 23); textXianLuGuoLv.setLabelStr(Messages.MainApplication_XianLuGuoLv);
?
实际应用效果
?
?