扩充SWT带标签的Text控件

扩展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可视化编辑界面


扩充SWT带标签的Text控件

实际应用代码

    StrongText textXianLuGuoLv = new StrongText(groupXianLuLieBiao, SWT.NONE, 60);
    textXianLuGuoLv.setTextStr("");
    textXianLuGuoLv.setBounds(10, 21, 165, 23);
    textXianLuGuoLv.setLabelStr(Messages.MainApplication_XianLuGuoLv);

 

实际应用效果


扩充SWT带标签的Text控件