我的应用程序有一点GUI问题:在几周前我创建的一种表单中,有三个AutoCompleteTextfield。如果第一个内部没有文本,则其他文本被禁用。
它就像一个魅力,但也有三个StringPickers,用于选择像用户,类型......当第一个ACTF已经填充,因此另外两个被启用,如果我选择一个字符串从任何一个采摘者,两个ACTF成为残疾人!我真的不知道他们为什么残疾,所以如果有人有想法,我将不胜感激:)
以下是第一个ACTF的覆盖代码:
final DefaultListModel<String> optPart = new DefaultListModel<>();
actfPart = new AutoCompleteTextField(optPart){
@Override
protected boolean filter(String text) {
if(text.length() == 0) {
optPart.removeAll();
actfContact.setEnabled(false);
actfContact.setHint(language.get("ui.mobile.newtask.hint.contact.nopartner"));
actfProj.setEnabled(false);
actfProj.setHint(language.get("ui.mobile.newtask.hint.project.nopartner"));
return true;
}
String[] l = searchPartner(text);
if(l == null || l.length == 0) {
actfContact.setEnabled(false);
actfContact.setHint(language.get("ui.mobile.newtask.hint.contact.nopartner"));
actfProj.setEnabled(false);
actfProj.setHint(language.get("ui.mobile.newtask.hint.project.nopartner"));
return false;
}
actfContact.setEnabled(true);
actfContact.setHint(language.get("ui.mobile.newtask.hint.contact"));
actfProj.setEnabled(true);
actfProj.setHint(language.get("ui.mobile.newtask.hint.project"));
optPart.removeAll();
for(String s : l) {
optPart.addItem(s);
}
return true;
}
private String[] searchPartner(String text)
{
Partner[] parts = RESTeCust1.searchSomePartners(0, 30, text);
String[] strs = new String[parts.length];
int i = 0;
for (Partner part : parts) {
strs[i] = part.getLabel() + " REF: " + part.getReference();
i++;
}
return strs;
}
};
在调用此代码之前,其他ACTF和字符串选择器已初始化。
答案 0 :(得分:2)
导出其他AutoCompleteTextField
个实例之一并覆盖setEnabled(boolean)
在overriden方法中放置一个断点并重现该问题。您将看到一个callstack,表明究竟是谁调用了setEnabled(false)
以及为什么......