如果指定字段为空,则取消激活OK按钮

时间:2014-03-06 14:08:01

标签: java text dialog swt

我正在使用org.eclipse.swt.widgets.Text的Text字段类型。如果特定文本字段是emtpy,我想停用Ok-Button。

有什么想法吗?

这是我的代码:

public class CCIDDialog extends TitleAreaDialog {


  public CCIDDialog(Shell parentShell) {
    super(parentShell);
  }

  public void create(String _title, String firstchar) {
    this.firstchar = firstchar;
    super.create();
    setTitle(_title);
    setMessage("Bitte geben Sie die CCID "+firstchar+"xxxxxxx und eine Beschreibung ein (max. 7-stellig): ", IMessageProvider.INFORMATION);
    getButton(IDialogConstants.OK_ID).setEnabled(false);
  }

  @Override
  protected Control createDialogArea(Composite parent) {
    Composite area = (Composite) super.createDialogArea(parent);
    Composite container = new Composite(area, SWT.NONE);
    container.setLayoutData(new GridData(GridData.FILL_BOTH));
    GridLayout layout = new GridLayout(2, false);
    container.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
    container.setLayout(layout);

    createCCID(container);
    createDescription(container);

    return area;
  }

  private void createCCID(Composite container) {
    Label lbtFirstName = new Label(container, SWT.NONE);
    lbtFirstName.setText("CCID (ohne "+firstchar+"): ");

    GridData dataCCID = new GridData();
    dataCCID.grabExcessHorizontalSpace = true;
    dataCCID.horizontalAlignment = GridData.FILL;

    ccidText = new Text(container, SWT.BORDER);
    ccidText.setLayoutData(dataCCID);
    ccidText.setTextLimit(7);
    ccidText.addModifyListener(new ModifyListener(){

        public void modifyText(ModifyEvent e) {
           Text text = (Text) e.widget;
           System.out.println(text.getText());      
    }
    }); 
   }

  }
 }

  @Override
  protected void okPressed() {
    saveInput();
    super.okPressed();
  }
} 

ccidText是不应该为空的字段。 谢谢你

1 个答案:

答案 0 :(得分:3)

最简单的方法似乎是默认关闭按钮,在文本字段上注册修改监听器,检查文​​本内容并在文本字段文本不再为空时激活按钮。