[RESOLVIDO]JFileChooser.showSaveDialog();[RESOLVIDO]

10 respostas
M

Olá gente!
Bem, eu estou tentando usar o JFileChooser para salvar um arquivo pdf, mas em vez de aparecer Nome do arquivo, aparece Nome da pasta e quando o usuário seleciona/abre outro diretório, aparece o caminho absoluto do mesmo, não o nome que eu digitei.

Veja esse Print Screen (Anexo):

10 Respostas

D

posta o pedaço do código pls

M

Eís o código:

JFileChooser local = new JFileChooser();
        local.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
        local.setDialogTitle("Escolha um local para salvar");
        local.setFileHidingEnabled(false);
        
                
        int res = local.showSaveDialog(null);
        if (res == JFileChooser.APPROVE_OPTION) {
            
            String caminho = String.valueOf(local.getSelectedFile());
            ini = System.currentTimeMillis();
            
            try {
                arquivo = "\n" + "Cliente: " + jTNome.getText() + "\n\n" + "Endereço: " + jTEndereco.getText() + "\n\n" 
				  + "Bairro: " + jTBairro.getText() + "\n\n"  + "Cidade: " + jTCidade.getText() + "\n\n" 
				  + "Estado: " + jTEstado.getText() + "\n\n" + "País: " + jTPais.getText() + "\n\n" + "CEP: " + jFCep.getText() + "\n\n"
				  + "CPF: " + jFCpf.getText() + "\n\n" + "RG: " + jFRg.getText() + "\n\n"  
                                  + "Data de aniversário: " + jFNascimento.getText() + "\n\n" + "Número de telefone fixo: " + jFTelefone.getText() + "\n\n" 
				  + "Número de celular: " + jFCelular.getText() + "\n\n" + "E-mail: " + jTEmail.getText() + "\n\n" + "Filiação: " + "\n\n"
                                  + "Pai: " + jTPai.getText() + "\n\n" + "Mãe: " + jTMae.getText();
            
                 PDF.exportarPDF(caminho + ".pdf", jTNome.getText(), arquivo);
                 total = System.currentTimeMillis() - ini;
                 
                 JOptionPane.showMessageDialog(null, "PDF criado com sucesso!" + "\n\n" + "Tempo total: " + (total / 1000.0) + " segundos",
                    "Sucesso!", JOptionPane.INFORMATION_MESSAGE);
             } catch (Exception ex) {
                 JOptionPane.showMessageDialog(null, "Erro em criar o arquivo PDF: " + ex.getMessage(), "Erro", JOptionPane.ERROR_MESSAGE);
                 System.out.println("Erro em criar o arquivo PDF: " + ex.getMessage());
             }
        }

Classe PDF:

package GUI;

import com.itextpdf.text.Document;
import com.itextpdf.text.Element;
import com.itextpdf.text.Font;
import com.itextpdf.text.Font.FontFamily;
import com.itextpdf.text.PageSize;
import com.itextpdf.text.Paragraph;
import com.itextpdf.text.pdf.PdfWriter;

import java.io.FileOutputStream;
import java.io.OutputStream;

public class PDF {
    public static void exportarPDF(String nome, String titulo, String conteudo) throws Exception {
        Document doc = null;
        OutputStream os = null;
		
        try {
            //cria o documento tamanho A4, margens de 2,54cm (72)
            doc = new Document(PageSize.A4, 48, 48, 48, 48);
			
            //cria a stream de saída
            os = new FileOutputStream(nome);
			
            //associa a stream de saída ao 
            PdfWriter.getInstance(doc, os);
			
            //abre o documento
            doc.open();

            //cria a fonte
            Font f = new Font(FontFamily.HELVETICA, 20, Font.BOLDITALIC);
            Font f2 = new Font(FontFamily.TIMES_ROMAN, 14, Font.NORMAL);
            
            //adiciona o texto ao PDF
            Paragraph p1 = new Paragraph(titulo, f);
            p1.setAlignment(Element.ALIGN_CENTER);
            doc.add(p1);
			
            Paragraph p2 = new Paragraph(conteudo, f2);
            doc.add(p2);
            
            System.out.println("PDF criado com sucesso!");

        } finally {
            if (doc != null) {
                //fechamento do documento
                doc.close();
            }
            if (os != null) {
               //fechamento da stream de saída
               os.close();
            }
        }
    }
}
D
acho que é aqui

acho que é aqui

M

Não é isso, não.
Ele salva direitinho. O erro é no JFileChosser, que como mostra a imagem, em vez de aparecer Nome do arquivo: Teste, aparece Nome da pasta: C:\Users\Documents.
Entendeu?

I
:thumbup:

:thumbup:

D

InicianteJavaHenrique:
getSelectedFile().getName();

:thumbup:


iiissoo, eu acho que é pra voce fazer esse código naquele lugar. Eu acho que é ali e é pra fazer alguma coisa como o Henrique disse

M

Mas continua do mesmo jeito.
Aparecendo o caminho absoluto, estou querendo deixa-lo sem esse “Nome da pasta”. Veja esse outro Print Screen (Anexo):

F

Troque isso:
local.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);

por isso:
local.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES);

É isso?

M

Compare essa ultima imagem com a da primeira mensagem.

M

felipeaps:
Troque isso:
local.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);

por isso:
local.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES);

É isso?

Ok. Deu certo agora, eu coloquei DIRECTORIES_ONLY, para o usuário selecionar apenas diretórios.

Valeu!

Criado 25 de maio de 2012
Ultima resposta 25 de mai. de 2012
Respostas 10
Participantes 4