0

私のJavaデスクトップアプリケーションには、そのテーブルにJTable(swingのテーブル)があり、さまざまな人物の名前があります。今、私は検索(名前を検索するためのテキストボックス)に何かを書きたいので、各文字を入力した後、JTableの結果がソートされます....たとえば、アルファベット「a」で始まる5つの文字列があるので、aを入力するとこれらの5つの文字列はすべてJTableに表示する必要があり、「a」の後に「b」と書くと「ab」で始まる2つの文字列があり、それらの2つの文字列を表示する必要があります....

..助けてください友達

4

2 に答える 2

0

あなたの質問を正しく理解できれば、RowFilterクラスはあなたが必要とすることを正確に行うはずです。setAutoCreateRowSorter(true)これは、最初に JTable を呼び出した場合にのみ機能することに注意してください。

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();
    }
});
于 2013-10-19T23:18:49.430 に答える
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;
}
于 2013-10-19T21:27:58.700 に答える