有没有办法从 jtable 下载选定的行?

Is there a way to download a selected row from a jtable?

我希望能够从 jtable select 一行并将其下载到 .txt 文件。不是整个数据库只是 selected 行。这可能吗?

目前我正在做的是选择行并将它们传输到单独的 jtable,然后使用此代码从那里下载以传输。

DefaultTableModel model1 = (DefaultTableModel) Shortlist_Table.getModel();
            int[] indexs = Shortlist_Table.getSelectedRows();
            Object[] row = new Object[3];
            DefaultTableModel model2 = (DefaultTableModel) Final_Table.getModel();
            for(int i=0; i<indexs.length; i++)
        {
            row[0] = model1.getValueAt(indexs[i], 0);
            row[1] = model1.getValueAt(indexs[i], 1);
            row[2] = model1.getValueAt(indexs[i], 2);
            model2.addRow(row);
        }

然后使用此代码下载到 .txt 文件。

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

        String filePath = "C:\Users\omar\Desktop\myfolder\txtfile.txt";
        File file = new File(filePath);
        try {
            FileWriter fw = new FileWriter(file);
            BufferedWriter bw = new BufferedWriter(fw);

            for(int i = 0; i < jTableExport.getRowCount(); i++){//rows
                for(int j = 0; j < jTableExport.getColumnCount(); j++){//columns
                    bw.write(jTableExport.getValueAt(i, j).toString()+" ");
                }
                bw.newLine();
            }

            bw.close();
            fw.close();

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

    }

但我想提高效率,在网上找不到任何地方显示如何将 selected 行直接下载到文件中。感谢任何帮助,谢谢!

编辑2: 我一直在努力想出一些办法,到目前为止我有这个:

try{
           File file = new File("/Users/lucacassin/NetBeansProjects/Recruitment\ Project/HiredCandidatesTextFile.txt");
           if(!file.exists()){
               file.createNewFile();
           }

               try (FileWriter fw = new FileWriter(file.getAbsoluteFile()); BufferedWriter bw = new BufferedWriter(fw)) {

                   int row = Shortlist_Table.getSelectedRow();
                   bw.write(Shortlist_Table.getModel().getValueAt(row, 0)+" ");
                   bw.write(Shortlist_Table.getModel().getValueAt(row, 1)+" ");
                   bw.write(Shortlist_Table.getModel().getValueAt(row, 2)+" ");
                   bw.write("\n_________\n");


               }
           JOptionPane.showMessageDialog(null, "Data Exported");

           }catch(HeadlessException | IOException ex){
           } 

但是,它什么也没做,我不知道出了什么问题,因为没有抛出任何错误或任何东西,就是什么也没有发生。有什么想法吗?

我想出了如果其他人需要它的方法。与我上面的编辑类似,但我将完整的文件路径放在我应该只放部分文件名的地方。现在可以多次 运行 而不会覆盖文件。

           try (FileWriter fw = new FileWriter("HiredCandidatesTextFile.txt",true); BufferedWriter bw = new BufferedWriter(fw)) {

                   int row = Shortlist_Table.getSelectedRow();
                   bw.write(Shortlist_Table.getModel().getValueAt(row, 0)+" ");
                   bw.write(Shortlist_Table.getModel().getValueAt(row, 1)+" ");
                   bw.write(Shortlist_Table.getModel().getValueAt(row, 2)+" ");
                   bw.write("\n_________\n");


               } catch (IOException ex) {
        Logger.getLogger(AddShortlist.class.getName()).log(Level.SEVERE, null, ex);
    }
           JOptionPane.showMessageDialog(null, "Data Exported");