Criar arquivo de texto ou botão de impressão

Acredito que minha duvida aqui seja muito simples …bom o problema é o seguinte…
Estou criando um formulario no netbeans …e após a pessoa preencher esse formulario deve existir um botão para gerar qualquer arquivo de texto ou um botão para impressão deste formulario preenchido !

Espero q possam ajudar levando em conta que sou muito iniciante em java!
Obrigado!

1 curtida

vc está fazendo o formulário pra web, swing…???

No netbeans acho que você pode adicionar o botão na tela…
Aí acho que você da 2 cliques no botão e vai pro código… Não tenho certeza porque não uso o netbeans…
No código você coloca o comando que quiser pra gerar o arquivo… impressão…

Estou fazendo swing…
queria gerar um txt com tds as informações q foram preenchidas … uma especie de botão “submit” soh q as informações devem gerar um arquivo e n ir para um banco … gostaria tbm de um segundo bota que ao clicar ele imprimir em A4 básico todo o formulario swing preenchido !
Obrigado!

[quote=igor.schkrab]No netbeans acho que você pode adicionar o botão na tela…
Aí acho que você da 2 cliques no botão e vai pro código… Não tenho certeza porque não uso o netbeans…
No código você coloca o comando que quiser pra gerar o arquivo… impressão…[/quote]

o botão eu posso colocar qualquer um mesmo … o problema é que desconhece qualquer código de impressão !

para imprimir tem q ter uma tabela dae voce imprime essa tabela aqui o esquema de uma

    private void preencheTabelaNomeProduto() {
          DefaultTableModel modelo = new javax.swing.table.DefaultTableModel(
            new Object [][] {},
            new String [] {"Código", "Nome", "Quant_Estoque", "Valor_Unitario"}
        );
    ProdutoDao ProdutoD = new ProdutoDao();
   
    tabela.setModel(modelo);
    
    List<Produto> lista = ProdutoD.listar(campo_pra_pesquisaNome.getText());//

a linha acima é sua paesuisa tipo por nome por id por data e a abaixo sera preenchido a JTABLE com o retorno da pesquisa 

    for(Produto pro:lista) {
        modelo.addRow(new String[] {
            pro.getid_produto().toString(), pro.getnome_produto(), pro.getquant_produto().toString(), pro.getvalor_produto().toString() });


    }
} 


 no action do botao voce fas isso e esta imprimido
   try {
        tabela.print();
    } catch (PrinterException ex) {
        JOptionPane.showMessageDialog(this, "Não foi possível imprimir\n" + ex.getMessage());
    } 

Como criar arquivos: http://www.guj.com.br/user.article.get.chain?page=1&article.id=13

Como imprimir: da uma procurada no guj… Com certeza deve ter…

blz então, procure pelo forum alguma coisa do tipo “como gerar um .txt” então use o evento do botão para gerar esse .txt.
Agora o botão de imprimir não é tão simples assim, veja q tipo de impressora vc tem instalado na sua máquina, se é em rede, se é local, se é usb ou se é cabo paralelo, quando eu fiz uma vez isso, já faz um tempo eu criei uma classe chamada Print onde continha um método q por parametro recebia uma string para ser impressa, já resolveu o meu problema.
flw…

O que eu n estou conseguindo entneder eh como gerar o txt com o formulario preenchido … pelo que eu percebi da pra criar com o fileOutputSetream o vc passa o que sera escrito no arquivo txt … eu gostaria q ele jogasse o formulario swing direto para txt sem ter que passar campo a campo como parametro !

Voce pega os valores dos campos do formulario…
Coloca numa string… formata do jeito que quiser… e joga no arquivo…

vc vai ter que criar uma rotina dai que recebe um frame como parametro extrai as informaçoes e ai salva elas no txt, vc so tem como salvar texto no txt vai te que pega as informaçoes gera uma string formatada e tal e ai salva no tx

blza assim que possivel vou tentar fazer isto… o grande problema é o tamanho do formulario …vcs tem algum exemplo em que a pessoa prepare a string e dpos jogue em um txt …ou algo do tp … vai ser bem util !
Obrigado a todos!

Classe TextFile simples que eu criei:

import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;

public class TextFile
{
    private String filename;
    private String text;

    public String getFilename()
    {
        return filename;
    }

    public String getText()
    {
        return text;
    }

    public void setText(String text)
    {
        this.text = text;
    }

    public void save() throws IOException
    {
        FileWriter fw = new FileWriter(filename);
        fw.write(text);
        fw.close();
    }

    public void saveAs(File file) throws IOException
    {
        saveAs(file.getAbsolutePath());
    }

    public void saveAs(String filename) throws IOException
    {
        FileWriter fw = new FileWriter(filename);
        fw.write(text);
        fw.close();
        this.filename = filename;
    }

    public void open(String filename) throws FileNotFoundException, IOException
    {
        File file = new File(filename);
        open(file);
    }

    public void open(File file) throws FileNotFoundException, IOException
    {
        BufferedReader br = new BufferedReader(new FileReader(file));
        StringBuffer bufSaida = new StringBuffer();
        for (String linha = br.readLine(); linha != null; linha = br.readLine()) {
            bufSaida.append(linha);
            bufSaida.append("\n");
        }
        br.close();
        this.text = bufSaida.toString();
        this.filename = file.getAbsolutePath();
    }
}

no seu código (dentro do ActionListener do botao), crie uma string contendo o texto que vc quer para o arquivo e ponha em um objeto TextFile:
ajuste os imports usando sua IDE :slight_smile:

        // cria o texto
        StringBuffer texto = new StringBuffer();
        texto.append("Código: ");
        texto.append(codigoTextField.getText() + "\n");
        texto.append("Nome: ");
        texto.append(nomeTextField.getText() + "\n");
        texto.append("Endereco: ");
        texto.append(enderecoTextField.getText() + "\n");
        
        // prepara o textfile         
        TextFile txtFile = new TextFile();
        txtFile.setText(texto.toString());
        
        // chooser para o usuario escolher o nome do arquivo 
        JFileChooser chooser = new JFileChooser();
        if (chooser.showSaveDialog(null) == JFileChooser.APPROVE_OPTION) {
            try {
                String filename = chooser.getSelectedFile().getAbsolutePath();
                if (!filename.endsWith(".txt")) {
                    filename += ".txt";
                }
                txtFile.saveAs(filename);
            } catch (Exception ex) {
                ex.printStackTrace();
            }
        }

Ah! isso considerando que seu form tivesse os JTextFields codigoTextField, nomeTextField e enderecoTextField.

acredito que isso ajude…
vc pode melhorar esse algoritmo :slight_smile:

O que acham desse algoritmo … Bem básico …preparei apenas para teste …seria o actionPerformed do botão gerar arquivo …

import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectOutputStream;

public class Gravador
{
public static void main (String[] args)
{
ObjectOutputStream s;
FileOutputStream f;
String a;
a = “Teste \n Teste \n Teste”; //preparação da string que irá gerar o txt;

    try {
        f = new FileOutputStream("c:\\teste.txt", true); //local e nome do arquivo que sera gerado;
        s = new ObjectOutputStream(f);
        s.writeObject(a); //escreve no arquivo txt;
    }
    catch(IOException io )
    {
        System.out.println("Erro ao criar arquivo");
    }

}

}

Dica: Se quiser algo bem prático para ler e escrever de/em Streams, procure sobre Scanner e PrintWritter.

[quote=Glauber Pardo]O que acham desse algoritmo … Bem básico …preparei apenas para teste …seria o actionPerformed do botão gerar arquivo …

import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectOutputStream;

public class Gravador
{
public static void main (String[] args)
{
ObjectOutputStream s;
FileOutputStream f;
String a;
a = “Teste \n Teste \n Teste”; //preparação da string que irá gerar o txt;

    try {
        f = new FileOutputStream("c:\\teste.txt", true); //local e nome do arquivo que sera gerado;
        s = new ObjectOutputStream(f);
        s.writeObject(a); //escreve no arquivo txt;
    }
    catch(IOException io )
    {
        System.out.println("Erro ao criar arquivo");
    }

}

}[/quote]

alguem pode me falar se o código assim irá funcionar para gerar o txt e abrir em notepad

[quote=Glauber Pardo][quote=Glauber Pardo]O que acham desse algoritmo … Bem básico …preparei apenas para teste …seria o actionPerformed do botão gerar arquivo …

import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectOutputStream;

public class Gravador
{
public static void main (String[] args)
{
ObjectOutputStream s;
FileOutputStream f;
String a;
a = “Teste \n Teste \n Teste”; //preparação da string que irá gerar o txt;

    try {
        f = new FileOutputStream("c:\\teste.txt", true); //local e nome do arquivo que sera gerado;
        s = new ObjectOutputStream(f);
        s.writeObject(a); //escreve no arquivo txt;
    }
    catch(IOException io )
    {
        System.out.println("Erro ao criar arquivo");
    }

}

}[/quote]

alguem pode me falar se o código assim irá funcionar para gerar o txt e abrir em notepad [/quote]

Sim, vai. Gera um arquivo txt comum, como se tivesse sido criado em um editor de texto do sistema operacional.

Veja um exemplo:

Arquivo JAR executável

Código fonte - classe JFrameGenerico

Código fonte - classe EditorDeTexto

[quote=marcobiscaro2112]Veja um exemplo:

Arquivo JAR executável

Código fonte - classe JFrameGenerico

Código fonte - classe EditorDeTexto[/quote]

agradeco muito a sua ajuda …
infelizmente n tenho conhecimento bastante para entender seu código !
gostaria soh que me informaçe se o código na qual eu criei acima pode servir para escrever uma string formatada!

O que quer dizer com formatada? Com várias fontes diferentes, negrito, itálico, etc.?