gpt4 book ai didi

java - 如何使用 Jface 对话框验证文本?

转载 作者:行者123 更新时间:2023-12-01 23:09:36 24 4
gpt4 key购买 nike

我使用以下代码创建了一个带有两个输入字段的对话框。

 public class CCIDDialog extends TitleAreaDialog {

private Text ccidText;
private Text descriptionText;
private String CCID;
private String description;


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



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



@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);
}

private void createDescription(Composite container) {
Label lbtLastName = new Label(container, SWT.NONE);
lbtLastName.setText("Beschreibung: ");

GridData dataDescription = new GridData();
dataDescription.grabExcessHorizontalSpace = true;
dataDescription.horizontalAlignment = GridData.FILL;
descriptionText = new Text(container, SWT.BORDER);
descriptionText.setLayoutData(dataDescription);
}



@Override
protected boolean isResizable() {
return true;
}

// save content of the Text fields because they get disposed
// as soon as the Dialog closes
private void saveInput() {
CCID = ccidText.getText();
description = descriptionText.getText();

}

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

public String getCCID() {
return CCID;
}

public String getDescription() {
return description;
}
}

有没有办法验证ccidtext?如果用户输入超过 7 个字符,他必须收到通知,并且不能继续对话。我在网上读了很多资料,但找不到解决这个问题的方法。

非常感谢您的帮助。

乔纳斯国际

最佳答案

您可以使用Text.addModifyListener添加一个ModifyListener,每次文本更改时都会调用该监听器。您还可以使用 Text.addVerifyListener 添加 VerifyListener,这实际上可以阻止输入文本。

对于TitleAreaDialog,您可以调用setMessagesetErrorMessage在标题区域显示消息。

您可以使用以下方法禁用对话框上的确定按钮:

getButton(IDialogConstants.OK_ID).setEnabled(false);

注意:如果在对话框构建过程中过早调用getButton(xxx),则可能会返回null。调用 createDialogArea 方法后,在 createContents 方法期间创建按钮。

因此,您可以通过重写 createContents 来访问按钮,如下所示:

@Override
protected Control createContents(final Composite parent)
{
Control control = super.createContents(parent);

// TODO access buttons here

return control;
}

关于java - 如何使用 Jface 对话框验证文本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22224525/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com