我正在使用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是不应该为空的字段。 谢谢你
答案 0 :(得分:3)
最简单的方法似乎是默认关闭按钮,在文本字段上注册修改监听器,检查文本内容并在文本字段文本不再为空时激活按钮。