Visualizzazione dei risultati da 1 a 10 su 11

Hybrid View

  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2016
    Messaggi
    31
    Aggiorno: Sono riuscita a risolvere il problema dell'ultima riga.
    Ora rimane solo un problema: Devo salvare il file pdf per forza su un percorso specifico del mio pc, se uso semplicemente C:\\ (in modo tale che sia presente su tutti i pc e non abbia problemi) non funziona. Avevo letto in giro che bisogna avere i permessi. Come fare?
    Grazie

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da raissa95 Visualizza il messaggio
    se uso semplicemente C:\\ (in modo tale che sia presente su tutti i pc e non abbia problemi) non funziona. Avevo letto in giro che bisogna avere i permessi. Come fare?
    In generale ci sono almeno 3 possibilità:

    a) Se è una applicazione "grafica" come nel tuo caso, puoi usare JFileChooser (e il suo openSaveDialog) per chiedere all'utente dove salvare il file. Tu ottieni un java.io.File e usi questo per FileOutputStream.

    b) Scrivi un file nella directory "corrente" (o in una sotto-directory, assicurandoti prima con mkdir() di File che la directory esista/sia creata). Ovviamente l'utente deve sapere come impostare la directory corrente quando avvia la applicazione e sapere che il file se lo aspetta lì.

    c) Scrivi un file in una locazione fissa ma "nota", come ad esempio nella "home" directory dell'utente o più sotto.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Utente di HTML.it
    Registrato dal
    Dec 2016
    Messaggi
    31
    Quote Originariamente inviata da andbin Visualizza il messaggio
    In generale ci sono almeno 3 possibilità:

    a) Se è una applicazione "grafica" come nel tuo caso, puoi usare JFileChooser (e il suo openSaveDialog) per chiedere all'utente dove salvare il file. Tu ottieni un java.io.File e usi questo per FileOutputStream.

    b) Scrivi un file nella directory "corrente" (o in una sotto-directory, assicurandoti prima con mkdir() di File che la directory esista/sia creata). Ovviamente l'utente deve sapere come impostare la directory corrente quando avvia la applicazione e sapere che il file se lo aspetta lì.

    c) Scrivi un file in una locazione fissa ma "nota", come ad esempio nella "home" directory dell'utente o più sotto.
    Grazie per i suggerimenti, ho optato per la possibilità n.1 e sono riuscita a creare il mio JFileChooser, che mi prende il percorso e con quello mi crea il pdf per poi subito dopo aprirlo (in modo tale che l'utente clicchi su stampa all'interno del pdf). Mi chiedevo però se esiste qualche metodo che imposta di default il nome da assegnare al file da salvare e l'utente se vuole può modificarlo. Parlo proprio dell'area in cui si inserisce il nome da salvare. Al momento la casella è vuota e non salva fino a quando non inserisco un nome. Io vorrei inserirci "Prenotazioni discipline.pdf", così l'utente clicca direttamente su Salva. E' possibile?

    Questo il mio codice, privato delle cose inutili:

    codice HTML:
    public void actionPerformed(ActionEvent e) {
            JTable table=f.getPanel().getTabella();
            
            JFileChooser scelta = new JFileChooser("C:\\");
            scelta.showSaveDialog(f);
            scelta.setDialogTitle("Percorso in cui salvare il file pdf");
            scelta.setApproveButtonText("Seleziona");
            scelta.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
            File fileName=scelta.getSelectedFile();
          
    try {
                Document doc = new Document();
                PdfWriter.getInstance(doc, new FileOutputStream(fileName));
                doc.open();
                PdfPTable pdfTable = new PdfPTable(table.getColumnCount());
                //adding table headers
                for (int i = 0; i < table.getColumnCount(); i++) {
                    pdfTable.addCell(table.getColumnName(i));
                }
                //extracting data from the JTable and inserting it to PdfPTable
                for (int rows = 0; rows < table.getRowCount(); rows++) {
                    for (int cols = 0; cols < table.getColumnCount(); cols++) {
                        pdfTable.addCell(table.getModel().getValueAt(rows, cols).toString());
    
                    }
                }
                doc.add(pdfTable);
                doc.close();
            } catch (DocumentException ex) {
                
            } catch (FileNotFoundException ex) {
                
            }
            Process p = null;
            try {
                p = Runtime.getRuntime().exec("rundll32 url.dll,FileProtocolHandler "+fileName);
            } catch (IOException e1) {
                // TODO Auto-generated catch block
                e1.printStackTrace();
            }
            try {
                p.waitFor();
            } catch (InterruptedException e1) {
                // TODO Auto-generated catch block
                e1.printStackTrace();
            }
            f.setVisible(false);
    
        }

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.