мой jComboBox не реагирует должным образом - PullRequest
0 голосов
/ 04 февраля 2011

У меня есть редактируемый jCombobox, и он будет искать выбранных пользователей, если вы введете что-то внутри и нажмете Enter, это мой код

jComboBoxReceiver.getEditor().getEditorComponent().addKeyListener(new java.awt.event.KeyAdapter() {
            public void keyPressed(java.awt.event.KeyEvent e) {
                if(e.getKeyCode() == KeyEvent.VK_ENTER)             {
                    sr = new Search(((String) jComboBoxReceiver.getSelectedItem()));    
                    usrList = sr.searchUser();
                    String[] userList = new String[usrList.size()] ;
                    for(int i=0;i<usrList.size();i++){
                        userList[i]= usrList.get(i).getUserName();
                    }
                    DefaultComboBoxModel modelList = new DefaultComboBoxModel(userList);     
                    jComboBoxReceiver.setModel(modelList);              
                    }         
                } 
        });         

А потом, например, если вы наберете f, он должен вернуть Fred и Fried Chicken, но после того, как найдет результат, он снова начнет искать Fred, который сам по себе является первым элементом ... может кто-нибудь сказать мне почему?

1 Ответ

0 голосов
/ 11 марта 2011

Вместо замены модели комбинированного списка попробуйте просто обновить модель.

jComboBoxReceiver.getEditor().getEditorComponent().addKeyListener(new
    java.awt.event.KeyAdapter() {
        public void keyPressed(java.awt.event.KeyEvent e) {
            if(e.getKeyCode() == KeyEvent.VK_ENTER)             {
                sr = new Search(((String) jComboBoxReceiver.getSelectedItem()));    
                usrList = sr.searchUser();
                DefaultComboBoxModel model = jComboBoxReceiver.getModel();
                model.removeAllElements();
                for(int i=0;i<usrList.size();i++){
                    model.addElement(usrList.get(i).getUserName());
                }
            }
        }         
    };

Когда вы устанавливаете модель, вы сбрасываете представление JComboBox о ее мире.В частности, при замене модели выбор устанавливается на выбранный элемент модели.По умолчанию это первый элемент.В твоем случае "Фред".Это заменяет все, что пользователь вводил в редакторе выпадающего списка.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...