Я ищу способ создания поискового ящика, связанного с 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);
}
});
Вы никогда не должны использовать KeyListener в текстовом компоненте и на самом деле вряд ли когда-либо используете период KeyListeners. Возможно, вы захотите использовать DocumentListener вместо этого в документе JTextField. –
Вместо этого используйте один столбец 'JTable'. В таблицу можно добавить ['RowSorter'] (http://docs.oracle.com/javase/7/docs/api/javax/swing/DefaultRowSorter.html), а также его можно использовать как фильтр строк. –
Используйте последовательный и логический отступ для кодовых блоков. Отступ кода предназначен для того, чтобы помочь людям понять поток программы. –