사용자가 일련의 문자를 입력하면 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 기간을 거의 사용하지 않아야합니다. 아마도 JTextField의 Document 대신 DocumentListener를 사용하려고 할 것입니다. –
대신에 단일 열'JTable'을 사용해보십시오. ['RowSorter'] (http://docs.oracle.com/javase/7/docs/api/javax/swing/DefaultRowSorter.html)를 테이블에 추가 할 수 있으며, 테이블로 사용할 수도 있습니다. 행 필터. –
코드 블록에 일관되고 논리적 인 들여 쓰기를 사용하십시오. 코드의 들여 쓰기는 사람들이 프로그램 흐름을 이해하도록 돕기위한 것입니다. –