Я использую два фильтра AutocompleteTextFilter в качестве зависимых фильтров.Я хочу, чтобы второй фильтр менял свои параметры в зависимости от предложения первого фильтра.
Я привязал прослушиватель событий к первому фильтру, чтобы при потере фокуса он запускал процесс на втором фильтре.
Проблема в том, что второй фильтр никогда не меняет своих настроек.Я даже настроил жестко запрограммированные значения на случай, если что-то не так в моем коде, но не повезло.
Код, который я использую ниже:
public CreateSubmission(com.codename1.ui.util.Resources resourceObjectInstance, Map<String, ProjectType> projectTypes) {
this.projectTypes = projectTypes;
initGuiBuilderComponents(resourceObjectInstance);
gui_ac_projecttype.clear();
gui_ac_projecttype.setCompletion( this.projectTypes.keySet().toArray( new String[0]) );
gui_ac_projecttype.addFocusListener( new ProjectTypeFocusListener( this ));
gui_ac_steps.setCompletion( new String[]{"t10", "t20"});
}
public void makeSteps (String selection) {
ProjectType projectType = this.projectTypes.get( selection );
if (projectType != null) {
this.selectedProjectType = selection;
int length = projectType.projectSteps.length;
String[] steps = new String[ length ];
for(int i =0; i < length; i ++) {
steps[i] = projectType.projectSteps[i].projectStep;
}
// String[] s = gui_ac_steps.getCompletion();
gui_ac_steps.setCompletion( new String[]{"t1", "t2"} );
gui_ac_steps.repaint();
}
else {
}
}
public class ProjectTypeFocusListener implements FocusListener{
private CreateSubmission parent;
public ProjectTypeFocusListener( CreateSubmission parent ) {
this.parent = parent;
}
@Override
public void focusGained(Component cmp) {
//throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
}
@Override
public void focusLost(Component cmp) {
this.parent.makeSteps (
((AutoCompleteTextField)cmp).getText()
);
//throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
}
}
В приведенном выше коде инициализация происходит на "publicCreateSubmission "метод."gui_ac_projecttype" является первым AutocompletionTextField, который запускает весь процесс через его обработчик FocusListener (класс ProjectTypeFocusListener)
"gui_ac_steps" - это второй фильтр AutocompleteTextField, который должен изменить свои значения.По приведенному выше коду я инициализирую его предложения «t10», «t20».Эти два значения отображаются правильно.
Позже из-за метода FoculListenerHandler «ProjectTypeFocusListener.focusLost» я вызываю метод «makeSteps», который устанавливает параметры предложения в «t1», «t2, а затем перерисовываю компонент.два последних значения никогда не отображаются. Оно остается на первых значениях «t10», «t20».
Странно то, что в отладчике, когда я спрашиваю gui_ac_steps.getCompletion (), чтобы увидеть текущие параметры (код, который закомментирован в метод makeSteps) Я получаю правильные значения "t1", "t2".
Но на экране он продолжает отображать "t10", "t20".
anyпомощь оценена.