如何在jTable中读取和搜索文件?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在jTable中读取和搜索文件?相关的知识,希望对你有一定的参考价值。

我想在这段代码中做什么:当点击搜索按钮时,它将读取file然后将搜索值与file内的数据匹配并将在jTable中显示搜索结果。

我遇到的问题:如果选择了GPA,那么它会显示A +,A-两者,当我在给出另一个搜索值后再次按下搜索按钮时,该表只会添加更多数据。

需要的解决方案:我想只读取文件并仅在jTable中显示结果,而不是再次添加结果。搜索按钮应仅在GPA和类列中进行搜索。 &当GPA被选为“A / B / C +”或“ - ”时,搜索结果应仅包含包含该特定GPA的数据。

注意:我不想更改搜索选项。

我是JAVA的新手。所以任何形式的帮助将不胜感激! :)

Screenshot of the UI

private void srchBtnActionPerformed(java.awt.event.ActionEvent evt) {                                        

    //file read
    String filepath = "E:\Netbeans workspace\modified\Project\Info.txt";
    File file = new File(filepath);

    try {
        BufferedReader br = new BufferedReader(new FileReader(file));
        model = (DefaultTableModel)jTable1.getModel();

        Object[] tableLines = br.lines().toArray();

        for (int i = 0; i < tableLines.length; i++){
            String line = tableLines[i].toString().trim();
            String[] dataRow = line.split("/");
            model.addRow(dataRow);

        }

    } catch (Exception ex) {
        Logger.getLogger(ReceiverF.class.getName()).log(Level.SEVERE, null, ex);
    }

    //search from file
    String bGroupSrch = (String) jComboBoxBGroup.getSelectedItem();
    if(positiveRBtn.isSelected())
        bGroupSrch = bGroupSrch + "+";
    else if(negativeRBtn.isSelected())
        bGroupSrch = bGroupSrch + "-";

    String areaSrch = (String)jComboBoxArea.getSelectedItem();

    if (bgGroup.getSelection() != null) {

        filter(bGroupSrch);
        filter(areaSrch);
    } else {
        SrchEMsg sem = new SrchEMsg(this);
        sem.setVisible(true);
        sem.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
    }
}

//Filter Method
private void filter(String query){
    TableRowSorter<DefaultTableModel> tr= new TableRowSorter<DefaultTableModel>(model);
    jTable1.setRowSorter(tr);

    tr.setRowFilter(RowFilter.regexFilter(query));
}
答案

该表只是在其中添加了更多数据。

当您开始搜索时,您执行以下操作:

model.setRowCount(0);

清除表的表模型中的数据。

或者更简单的解决方案是不要一直重新加载数据。相反,您只需更改表使用的过滤器即可。

阅读Sorting and Filtering上的Swing教程中的部分。每次键入字符时,代码都会替换过滤器。

更改搜索选项后,您的代码将更改过滤器。

以上是关于如何在jTable中读取和搜索文件?的主要内容,如果未能解决你的问题,请参考以下文章

JTable 中的动态搜索过滤器

将 Interactive JTable 的内容保存到 .txt 文件以在下次运行时读取它

用搜索词过滤JTable而不丢失背景颜色

如何将选择列添加到显示搜索结果的 JTable

JTable自动读取空值问题

使用textfield在JTable上使用Autocomplete搜索Mysql数据库