在我的java桌面应用程序中,该表中有一个JTable(来自swing的表),其中包含各种人的名字。现在我想要在搜索中找到一些东西(用于搜索名称的文本框)然后在输入每个字母后,JTable的结果被排序.... 例如,有五个字符串以字母“a”开头,所以我输入所有这五个字符串必须在JTable中显示然后有2个字符串以“ab”开头,因为我在“a”之后写“b”然后那些2个字符串必须显示....
..请帮帮我朋友
答案 0 :(得分:0)
public String[] sortedResults(String terms, String[] possibleResults){
ArrayList<String> sortedResults = new ArrayList<String, String>();
for(String currentTerm : possibleResults){
if(currentTerm.startsWith(terms)){
sortedResults.add(currentTerm);
}
}
return sortedResults;
}
答案 1 :(得分:0)
如果我正确理解您的问题,RowFilter
课程应该完全符合您的要求。请注意,这只有在您首次在JTable上调用setAutoCreateRowSorter(true)
时才有效:
private void updateFilter() {
final String prefix = textField.getText().toLowerCase();
((TableRowSorter<?>) table.getRowSorter()).setRowFilter(
new RowFilter<Object, Integer>() {
public boolean include(Entry<?, ? extends Integer> entry) {
String name = entry.getStringValue(COLUMN_LASTNAME);
return name.toLowerCase().startsWith(prefix);
}
});
}
您需要从DocumentListener调用该方法:
searchTextField.getDocument().addDocumentListener(new DocumentListener() {
public void changedUpdate(DocumentEvent event) {
updateFilter();
}
public void insertUpdate(DocumentEvent event) {
updateFilter();
}
public void removeUpdate(DocumentEvent event) {
updateFilter();
}
});