【问题标题】:Export filtered JTable data to text file将过滤后的 JTable 数据导出到文本文件
【发布时间】:2021-06-18 11:50:08
【问题描述】:

我正在制作一个 Java 应用程序,用户可以在其中搜索 JTable 中的数据。我使用过滤器让用户从 JTable 中搜索内容。我还打算将过滤后的数据导出到文本文件。但是当我这样做时,它会导出整个表数据,而不仅仅是搜索到的数据。这是我尝试过的:

        DefaultTableModel Model = (DefaultTableModel)table.getModel(); 
        TableRowSorter<DefaultTableModel> tr = new TableRowSorter<DefaultTableModel>(Model);
        table.setRowSorter(tr);

        if(srchop.getSelectedItem().toString() == "Name Of Publication") {
            
            tr.setRowFilter(RowFilter.regexFilter(nameOfPub.getText().trim().toLowerCase()));
            
        }else if() {
            //code for search through other jtextfields
        }else{}
    
        table.setAutoCreateRowSorter(true);
        table.setRowSorter(tr);
        JFileChooser fileChooser = new JFileChooser();
        fileChooser.setDialogTitle("Export the data to");
        fileChooser.setCurrentDirectory(new File(System.getProperty("user.home")));
        fileChooser.addChoosableFileFilter(new FileNameExtensionFilter("XML Documents","xml"));
        fileChooser.addChoosableFileFilter(new FileNameExtensionFilter("Text Files","txt"));
        fileChooser.setAcceptAllFileFilterUsed(true);
        int userSelection = fileChooser.showSaveDialog(this);
        if(userSelection == JFileChooser.APPROVE_OPTION){
                File fileToSave = fileChooser.getSelectedFile();
                String ftsEx = fileToSave.getPath();
                int index = ftsEx.lastIndexOf('.');
                String ext = ftsEx.substring(index + 1);                    
                try {
                    
                    if(ext.equals("txt")) {
                    FileWriter fw = new FileWriter(fileToSave);
                    BufferedWriter bw = new BufferedWriter(fw);
                    for (int i = 0; i < model.getRowCount(); i++) {
                        for (int j = 0; j < model.getColumnCount(); j++) {
                            bw.write(model.getValueAt(i, j).toString()+" ");
                        }
                        bw.newLine();                    
                        }
                    JOptionPane.showMessageDialog(this, "EXPORT SUCCESSFUL","INFORMATION",JOptionPane.INFORMATION_MESSAGE);
                    bw.close();
                    fw.close();
                    }else if(ext.equals("xml")) {
                        
                        ////XML export code
                
        }

有什么方法可以将过滤后的数据存储到其他 jtable 中,然后使用它打印到文件中。或者有什么其他方法可以实现?

【问题讨论】:

    标签: java swing filter jtable export-to-text


    【解决方案1】:

    我的问题的答案是使用“表”而不是“模型”。 Model 存储所有 JTable 数据,而 table 仅存储 JTable 当前显示的数据。

    【讨论】:

      猜你喜欢
      • 2014-10-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-09-09
      • 2020-09-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多