【问题标题】:Deactivate OK-Button if specifical field is empty如果特定字段为空,则停用 OK 按钮
【发布时间】:2014-04-09 05:35:00
【问题描述】:

我正在使用 org.eclipse.swt.widgets.Text 的文本字段类型。如果特定文本字段为空,我想停用 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 是不应为空的字段。 谢谢你

【问题讨论】:

  • 是的,请粘贴您的代码。
  • 谢谢,我把代码加到帖子里了

标签: java text dialog swt


【解决方案1】:

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

【讨论】:

  • 酷,你能解释一下如何停用按钮并添加修改侦听器吗?
  • 好的,我用 getButton(IDialogConstants.OK_ID).setEnabled(false); 停用了按钮;
  • 我尝试了以下代码,但我得到了一个 ClassCast Exeption: ccidText.addModifyListener(new ModifyListener(){ public void modifyText(ModifyEvent e) { Text text = (Text) e.widget; System.out.println(text.getText()); } }); }
  • ClassCastException 发生在哪里?
  • 这是终端服务器的问题 :) 现在它工作正常,但我不知道如何为两个文本字段组合两个 ModifyListener。也许你可以再次提供帮助。我创建了一个新帖子:stackoverflow.com/questions/22245937/…
猜你喜欢
  • 2020-09-15
  • 1970-01-01
  • 1970-01-01
  • 2022-01-05
  • 2020-06-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-10-15
相关资源
最近更新 更多