Visualizzazione dei risultati da 1 a 6 su 6
  1. #1

    Salvare contenuto jTable tramite FileChooser

    vorrei salvare il contenuto di una jtable tramite filechooser.
    questo è il filechooser che uso (grazie ancora andbin!):
    codice:
            JFileChooser fc = new JFileChooser();
            FileFilter csvFilter = new FileNameExtensionFilter("File CSV", "csv");
            FileFilter txtFilter = new FileNameExtensionFilter("File TXT", "txt");
            fc.addChoosableFileFilter(csvFilter);
            fc.addChoosableFileFilter(txtFilter);
            int returnVal = fc.showSaveDialog(this);
            if (returnVal == JFileChooser.APPROVE_OPTION) {
                File f = fc.getSelectedFile();
                FileFilter selectedFilter = fc.getFileFilter();
                if (f.getName().indexOf('.') == -1) {
                    if (selectedFilter == csvFilter) {
                        f = new File(f.getPath() + ".csv");
                    } else if (selectedFilter == txtFilter) {
                        f = new File(f.getPath() + ".txt");
                    }
                }
                try {
                    FileWriter file = new FileWriter(f, true);
                    PrintWriter out = new PrintWriter(file);
                    out.println(jTable1.(quale metodo?) + "\n" + "Tot entrate: " + jTextField9.getText() + "\nTot uscite: " + jTextField10.getText() + "\nTOT: " + jTextField15.getText());
                    out.close();
                } catch (IOException e) {
                    JOptionPane.showMessageDialog(this, e, "ERRORE", JOptionPane.ERROR_MESSAGE);
                }
            }
    per la text area uso il metodo getText() (jTextArea1.getText()).
    per la jtable?

  2. #2
    un metodo sarebbe quello di usare il metodo getValueAtt di JTable (http://bit.ly/bn61bd).

    Oppure potresti estendere DefaultTableModel o AbstractTableModel per ritornarti una tua rappresentazione della tabella e usare quello come model per la tua JTable.
    max

    Silence is better than bullshit.
    @mmarcon
    jHERE, Maps made easy

  3. #3
    il metodo getValueAt() richiede due parametri che corrispondono alle colonne e ale righe.
    la mia jtable è questa:
    codice:
    jTable1.setModel(new javax.swing.table.DefaultTableModel(
        new Object [][] {},
        new String [] {
            "No.", "Entrate", "Uscite", "Causale", "Data"
        }
    ) {
        boolean[] canEdit = new boolean [] {
            false, false, false, false, false
        };
    
        public boolean isCellEditable(int rowIndex, int columnIndex) {
            return canEdit [columnIndex];
        }
    }
    );
    il problema è che qui io nn ho riferimenti specifici a righe e colonne.
    che ci metto come parametri?

  4. #4
    ho fatto qualcosa del genere ma nn è proprio il massimo:
    codice:
            JFileChooser fc = new JFileChooser();
            FileFilter csvFilter = new FileNameExtensionFilter("File CSV", "csv");
            FileFilter txtFilter = new FileNameExtensionFilter("File TXT", "txt");
            fc.addChoosableFileFilter(csvFilter);
            fc.addChoosableFileFilter(txtFilter);
            int returnVal = fc.showSaveDialog(this);
            if (returnVal == JFileChooser.APPROVE_OPTION) {
                File f = fc.getSelectedFile();
                FileFilter selectedFilter = fc.getFileFilter();
                if (f.getName().indexOf('.') == -1) {
                    if (selectedFilter == csvFilter) {
                        f = new File(f.getPath() + ".csv");
                    } else if (selectedFilter == txtFilter) {
                        f = new File(f.getPath() + ".txt");
                    }
                }
                try {
                    FileWriter file = new FileWriter(f, true);
                    PrintWriter out = new PrintWriter(file);
                    for (int row = 0; row < jTable1.getRowCount(); row++) {
                        for (int column = 0; column < jTable1.getColumnCount(); column++) {
                            out.println(jTable1.getValueAt(row, column) + "\n" + "Tot entrate: " + jTextField9.getText() + "\nTot uscite: " + jTextField10.getText() + "\nTOT: " + jTextField15.getText());
                        }
                    }
                    out.close();
                } catch (IOException e) {
                    JOptionPane.showMessageDialog(this, e, "ERRORE", JOptionPane.ERROR_MESSAGE);
                }
            }
    qualche consiglio per migliorarlo?

  5. #5
    nessuno?
    nn esiste un altro modo anche senza filechooser (nn è obbligatorio per me)?

  6. #6
    dopo diversi tentativi ho capito specificamente i due problemi.
    il primo è che usando questo codice nn mi salva la riga tutta insieme, ma va a capo ad ogni cella:
    codice:
                    for (int row = 0; row < jTable1.getRowCount(); row++) {
                        for (int column = 0; column < jTable1.getColumnCount(); column++) {
                            out.print(jTable1.getValueAt(row, column) + "\n");
                        }
                    }
    print con \n e println senza \n danno lo stesso risultato.
    println con \n è ancora peggio.
    print senza \n nn va mai a capo e mette tutto su una riga.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.