参考其他扩展控件的方法实现,其实就是多个基本控件的组合使用。按照这个方法可以扩展出其他控件。
扩展控件代码:
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);
实际应用效果