gpt4 book ai didi

java - 如何合并和验证 swt 对话框的两个文本字段?

转载 作者:搜寻专家 更新时间:2023-11-01 02:45:53 24 4
gpt4 key购买 nike

我还有一个问题。我对一个文本字段使用 ModifyListener 来激活和停用 swt 对话框中的 OK 按钮。它很好用。

现在我想为另一个文本字段添加一个 ModifyListener。我希望只有在两个文本字段中至少有一个字符时才激活 OK 按钮。

这是两个字段的代码:

descriptionText.addModifyListener(new ModifyListener(){

public void modifyText(ModifyEvent e) {
Text text = (Text) e.widget;

if (text.getText().length() == 0) {

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

if (text.getText().length() >= 1) {

getButton(IDialogConstants.OK_ID).setEnabled(true);
}
}
});

第二个字段:

ccidText.addModifyListener(new ModifyListener(){

public void modifyText(ModifyEvent e) {
Text text = (Text) e.widget;

if (text.getText().length() == 0) {
getButton(IDialogConstants.OK_ID).setEnabled(false);

}
if (text.getText().length() >= 1){
getButton(IDialogConstants.OK_ID).setEnabled(true);
}
}
});
}

我知道它不起作用,因为两个按钮之间没有依赖关系。我怎样才能结合它?

我想在两个 modifylistener 都检测到一个字符时将 ok-button 设置为 false。如果我删除一个测试字段中的所有字符,则必须再次停用该按钮。

谢谢你。

最佳答案

您可以对两个 Text 字段使用相同的 Listener 并将其添加到 SWT.KeyUp:

public static void main(String[] args)
{
final Display display = new Display();
Shell shell = new Shell(display);
shell.setText("StackOverflow");
shell.setLayout(new FillLayout(SWT.VERTICAL));

final Text first = new Text(shell, SWT.BORDER);
final Text second = new Text(shell, SWT.BORDER);
final Button button = new Button(shell, SWT.PUSH);
button.setText("disabled");
button.setEnabled(false);

Listener listener = new Listener()
{
@Override
public void handleEvent(Event e)
{
String firstString = first.getText();
String secondString = second.getText();

button.setEnabled(!isEmpty(firstString) && !isEmpty(secondString));
button.setText(button.isEnabled() ? "enabled" : "disabled");
}
};

first.addListener(SWT.KeyUp, listener);
second.addListener(SWT.KeyUp, listener);

shell.pack();
shell.setSize(300, shell.getSize().y);
shell.open();

while (!shell.isDisposed())
{
if (!display.readAndDispatch())
display.sleep();
}
display.dispose();
}

private static boolean isEmpty(String input)
{
if(input == null)
return true;
else
return input.trim().isEmpty();
}

看起来像这样:

enter image description here enter image description here


代码基本上(在每次击键时)检查两个 Text 是否为空。如果是这样,禁用 Button,否则启用它。

关于java - 如何合并和验证 swt 对话框的两个文本字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22245937/

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