2017-01-06 3 views
0

Мне нужно получить то, что пользователь напечатал в редактируемой комбо, и исследовать и повторно заполнить compo по отношению к слову. Я пытаюсь так:Как использовать редактируемый combobox, как выпадающий список в java?

JTextComponent editor = (JTextComponent) cb.getEditor().getEditorComponent();  

    editor.addKeyListener(new KeyAdapter() { 
     public void keyReleased(KeyEvent evt) { 
      atualizarCombo(); 
     } 
    }); 

Но когда я пытаюсь получить значение редактируемого комбо он получает только первую букву и все disapeers:

static void atualizarCombo(){ 
    try { 

     System.out.println("action"); 
     String typed = (String) cb.getEditor().getItem(); 

     newSelection = typed; 
     newSelection = newSelection.trim(); 
     carregarCombo(newSelection); 

    } catch (SQLException ex) { 
     Logger.getLogger(TesteCombo.class.getName()).log(Level.SEVERE, null, ex); 
    } 
} 
+3

Чтобы лучше помочь, пожалуйста, отправьте действительный [mcve] или [Short, Self Contained, Correct Example (SSCCE)] (http://sscce.org/) (т.е. полный пример кода, который демонстрирует проблему, которая достаточно коротка для публикации здесь, и мы можем скопировать-вставить без ее модификации, она должна включать в себя импорт и основной метод). Пожалуйста, примите [тур] и пройдите через [помощь], затем узнайте [спросите] хороший вопрос – Frakcool

ответ

1

Он только получает первое значение, потому что вы используете keyListener. Каждый раз, когда ключ «освобождается», в этом случае вызывается метод keyReleased. Я не уверен, что ваш метод carregarCombo делает, потому что вы не опубликовали этот код. Однако я бы использовал DocumentListener вместо keyListener

+0

Фактически получение первого значения не является проблемой с KeyListener. Проблема в другом месте в коде (вот почему [mcve] должен быть опубликован). Однако я согласен, что вы должны использовать DocumentListener для этого, поскольку это новый и лучший API. Прочтите раздел из учебника Swing [Прослушивание изменений в документе] (http://docs.oracle.com/javase/tutorial/uiswing/components/generaltext.html#doclisteners) для получения дополнительной информации и рабочего примера. Итак, (1+) для этого предложения. – camickr