2014-01-19 5 views
0

Я ищу способ создания поискового ящика, связанного с jlist, так что, когда пользователь вводит последовательность символов, он будет искать и сопоставлять элемент JList, а затем выделять этот элемент. Я создал jtextfield и добавил keylistener. Эта часть кода работает правильно, но только для первого символа, который пользователь вводит. Я пытаюсь расширить его до любого количества символов, которые пользователь вводит. Любые идеи, как это достичь? Спасибо заранееПоиск JList

String[] feedStrings = {"aaa", "abc", "opo","oiuu"} 

JList feedList = new JList(feedStrings); 

feedList.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION); 
feedList.setLayoutOrientation(JList.VERTICAL); 

feedList.setVisibleRowCount(4); 


       JTextField searchbox = new JTextField(); 
     searchbox.setColumns(8); 
     searchbox.setVisible(true); 


     searchbox.addKeyListener(new KeyAdapter() { 
       public void keyReleased(KeyEvent e) { 

        String text = "" + e.getKeyChar(); 
        StringBuffer buffer = new StringBuffer(); 
        buffer.append(text); 
        String strbuf = buffer.toString(); 

        int index = feedList.getNextMatch(strbuf, 0, Position.Bias.Forward); 
        System.out.println(index); 
        feedList.setSelectedIndex(index); 
      } 
     }); 
+1

Вы никогда не должны использовать KeyListener в текстовом компоненте и на самом деле вряд ли когда-либо используете период KeyListeners. Возможно, вы захотите использовать DocumentListener вместо этого в документе JTextField. –

+1

Вместо этого используйте один столбец 'JTable'. В таблицу можно добавить ['RowSorter'] (http://docs.oracle.com/javase/7/docs/api/javax/swing/DefaultRowSorter.html), а также его можно использовать как фильтр строк. –

+0

Используйте последовательный и логический отступ для кодовых блоков. Отступ кода предназначен для того, чтобы помочь людям понять поток программы. –

ответ

1

, но только для первого символа типов пользователей. Я пытаюсь расширить это до любого количества символов, которые пользователь вводит

Просто используйте текст из документа. Это еще одна причина использования DocumentListener и NOT KeyListener.

Хотя мне нравится предложение использовать JTable. Учебник Swing на How to Use Tables даже имеет рабочий пример, который показывает вам, как это сделать. Вы можете найти ссылку на учебник, прочитав JTable API.

Смежные вопросы