Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/400.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
输入每个字母表后,在JAVA桌面应用程序中更新arrayList和JTable_Java_Swing_Jtable - Fatal编程技术网

输入每个字母表后,在JAVA桌面应用程序中更新arrayList和JTable

输入每个字母表后,在JAVA桌面应用程序中更新arrayList和JTable,java,swing,jtable,Java,Swing,Jtable,在我的java桌面应用程序中,有一个JTable(来自swing的表),在该表中有各种人的名字。现在我想在我在搜索中写一些东西时(搜索名称的文本框),然后在输入每个字母后,对JTable的结果进行排序。。。。 例如,有五个字符串以字母“a”开头,因此当我输入a时,所有这五个字符串必须显示在JTable中,然后有两个字符串以“ab”开头,当我在“a”之后写“b”时,则必须显示这两个字符串 …请帮我找到朋友公共字符串[]分类结果(字符串术语,字符串[]可能结果){ public String[] s

在我的java桌面应用程序中,有一个JTable(来自swing的表),在该表中有各种人的名字。现在我想在我在搜索中写一些东西时(搜索名称的文本框),然后在输入每个字母后,对JTable的结果进行排序。。。。 例如,有五个字符串以字母“a”开头,因此当我输入a时,所有这五个字符串必须显示在JTable中,然后有两个字符串以“ab”开头,当我在“a”之后写“b”时,则必须显示这两个字符串

…请帮我找到朋友

公共字符串[]分类结果(字符串术语,字符串[]可能结果){
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;
}
ArrayList sortedResults=新的ArrayList(); for(字符串currentTerm:possibleResults){ if(当前术语开始使用(术语)){ 分类结果添加(当前术语); } } 返回结果; }
如果我正确理解了您的问题,那么
行过滤器类应该完全满足您的需要。请注意,仅当您首先在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);
            }
        });
}

你能显示代码吗?如果我错了,请纠正我,但听起来你好像不想让你的表排序;相反,您希望对表进行筛选。对于丢失的代码,非常抱歉。在输入答案时,我意外地按了两次enter键。我编辑了答案,使其包含完整的代码。在他有数千个字符串要匹配的情况下,这是一个非常缓慢的实现。也许添加一个长度与可能结果相同的数组,他们压缩它可能会起作用?此外,在他的问题中,他并没有说他有数千个字符串。不,这是真的:)看看这是否会扩展到您作为
CellEditor
的用例。正确的想法,但更好的答案是指向上的Swing教程以获得完整的工作示例。不仅如此,本教程现在还可以作为将来Swing问题的参考。
searchTextField.getDocument().addDocumentListener(new DocumentListener() {
    public void changedUpdate(DocumentEvent event) {
        updateFilter();
    }

    public void insertUpdate(DocumentEvent event) {
        updateFilter();
    }

    public void removeUpdate(DocumentEvent event) {
        updateFilter();
    }
});