Erro ao salvar no JTextArea

Salve… eu novamente… seguinte eu estou criando uma pequena aplicaçao para pegar valores no banco e colocar dentro de um textArea…mais ou menos assim:[code]
import java.awt.event.;
import javax.swing.
;
import java.awt.;
import java.sql.
;
import java.io.*;

public class RelatorioTela extends javax.swing.JFrame {

public Connection con = null;   
public Statement stm = null;   
public ResultSet rs;       



public RelatorioTela() {
    initComponents();
    setLocationRelativeTo(null);
    setIconImage(Toolkit.getDefaultToolkit().getImage("c:\\ricardo\\telas\\sgod.jpg"));        
    criaRelat();
}


// <editor-fold defaultstate="collapsed" desc=" Código Gerado ">//GEN-BEGIN:initComponents
private void initComponents() {
    jScrollPane1 = new javax.swing.JScrollPane();
    areaDeTexto = new javax.swing.JTextArea();
    jLabel1 = new javax.swing.JLabel();
    btnSair = new javax.swing.JButton();

    setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
    setTitle("Relat\u00f3rio Tela");
    setResizable(false);
    areaDeTexto.setColumns(20);
    areaDeTexto.setRows(5);
    jScrollPane1.setViewportView(areaDeTexto);

    jLabel1.setText("Este \u00e9 apenas um exemplo de como suas contas foram cadastradas no sistema e seus valores.");

    btnSair.setIcon(new javax.swing.ImageIcon("C:\\ricardo\\telas\\sgod.JPG"));
    btnSair.setText("SAIR");
    btnSair.addActionListener(new java.awt.event.ActionListener() {
        public void actionPerformed(java.awt.event.ActionEvent evt) {
            btnSairActionPerformed(evt);
        }
    });

    javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
    getContentPane().setLayout(layout);
    layout.setHorizontalGroup(
        layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
        .addGroup(layout.createSequentialGroup()
            .addContainerGap()
            .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 763, Short.MAX_VALUE)
                .addComponent(jLabel1)
                .addComponent(btnSair, javax.swing.GroupLayout.Alignment.TRAILING))
            .addContainerGap())
    );
    layout.setVerticalGroup(
        layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
        .addGroup(layout.createSequentialGroup()
            .addContainerGap()
            .addComponent(jLabel1)
            .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
            .addComponent(btnSair)
            .addGap(15, 15, 15)
            .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 202, Short.MAX_VALUE)
            .addContainerGap())
    );
    pack();
}// </editor-fold>//GEN-END:initComponents

private void criaRelat(){

areaDeTexto.setText(“Nome fixa\tValor\tVencimento\tNome Extra\tValor\tVencimento\n”);
System.out.println(“Nome fixa\tValor\tVencimento\tNome Extra\tValor\tVencimento\n”);
try{
Class.forName(“com.mysql.jdbc.Driver”);
con = DriverManager.getConnection(“jdbc:mysql://localhost/dbsgod”, “root”, “”);
stm = con.createStatement();
rs = stm.executeQuery(“select * from contafixa,contaextra”);
while(rs.next()){
String nmfix = rs.getString(2);
float vlrfix = rs.getFloat(3);
String vencfix = rs.getString(4);
String nmext = rs.getString(6);
float vlrext = rs.getFloat(7);
String vencext = rs.getString(8);
//areaDeTexto.setText("%s",nmfix);//esse sobrescreve o de cima
//e a qui diz que o se usar %s por exemplo, não pode porque
//é da classe javalang.String e o textArea e do swing.text.JTextComponet e
//não deixa
System.out.printf("%s\t %8.2f\t %s\t %s\t %8.2f\t %s\n",nmfix,vlrfix,vencfix,nmext,vlrext,vencext);

}

}
catch(Exception e){
JOptionPane.showMessageDialog(this,“Apresente este erro\nao desenvolvedor do sistema.”,“E R R O”,JOptionPane.INFORMATION_MESSAGE);
e.printStackTrace();
}

}

private void btnSairActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnSairActionPerformed

dispose();
}//GEN-LAST:event_btnSairActionPerformed

public static void main(String args[]) {
try{
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
}
catch (UnsupportedLookAndFeelException e){
   // handle exception
}
catch (ClassNotFoundException e) {
   // handle exception
}
catch (InstantiationException e) {
   // handle exception
}
catch (IllegalAccessException e) {
   // handle exception
}
java.awt.EventQueue.invokeLater(new Runnable() {
        public void run() {
            new RelatorioTela().setVisible(true);
        }
    });
}

// Declaração de variáveis - não modifique//GEN-BEGIN:variables
private javax.swing.JTextArea areaDeTexto;
private javax.swing.JButton btnSair;
private javax.swing.JLabel jLabel1;
private javax.swing.JScrollPane jScrollPane1;
// Fim da declaração de variáveis//GEN-END:variables

}[/code]
só que ele esta colocando apenas o ultimo registro acessado dentro do banco. Como faria para concatenar corretamente e salvar tudo no JTextArea certinho? Na saida formatada vai legal… onde está meu erro?
Obrigado por enquanto…

Ricardo

Gente… ninguém ainda? Como fazer essa concatenação… Me ajudem por favor…
Obrigado Ricardo

Acontece que o método setText() muda o texto todo, e não adiciona um novo ao final. Para isso, use o método append().

como assim? Coloco o append() dentro do laço?

Valeu por enquanto…

Ricardo

No lugar das linhas 88 a 92, faça isso:

String texto = String.format("%s\t %8.2f\t %s\t %s\t %8.2f\t %s\n",nmfix,vlrfix,vencfix,nmext,vlrext,vencext); // usa o format para preparar o texto
areaDeTexto.append(texto); // adiciona na area de texto, ao final

marcobiscaro2112

deu certo o append()… gravou tudo…

eu estou com 1 outra duvida, se vc puder me ajudar…

esse é o código:

[code]import java.io.;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.FileWriter;
import java.io.FileReader;
import java.util.
;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.sql.;
import javax.swing.
;
import javax.swing.JOptionPane;

public class Relatorio extends JFrame {

public Connection con = null;
public Statement stm = null;
public ResultSet rs;
String nome = “”;
String teste = “”, t = “”;

public Relatorio(){
}

public void salvar(){
 String nc = "";
float vlr = 0;
String venc = "";

try
{
Class.forName(“com.mysql.jdbc.Driver”);
con = DriverManager.getConnection(“jdbc:mysql://localhost/dbsgod”, “root”, “”);
stm = con.createStatement();
rs = stm.executeQuery(“select * from contaextra”);

     while(rs.next()){
    nc = rs.getString(2);
    vlr = rs.getFloat(3);
    venc = rs.getString(4);

    teste = String.format("%-4s\t %4.2f\t %-4s\n", nc, vlr, venc);
try{
    
    File f = new File("c:\\teste\\relatorio.txt");
    FileWriter fw = new FileWriter(f);
    fw.write("Cod\tNome\tSobrenome \n\n");
    fw.append(teste);
   // fw.write(teste);
    fw.close();// no arquivo que ele gera o\n fica um quadrinho e não salva todos os registros....
    //só o último registro
    
} //fim 2º try
catch (Exception e){
System.out.println("Erro ao gravar no aquivo");
}//fim 1º catch (do arquivo)

System.out.println(teste);
}//fim while
}//fim do 1º try
catch(Exception e)
{
JOptionPane.showMessageDialog(null,“Apresente este erro\nao desenvolvedor do sistema.”,“E R R O”,JOptionPane.INFORMATION_MESSAGE);
//e.printStackTrace();
}//fim 2º catch (da conexao ao banco)
}//fim metodo salvar

public static void main (String args[]) throws FileNotFoundException {
    Relatorio a = new Relatorio();
    a.salvar();
}

}
[/code]
e da quase o mesmo erro… na salva tudo e \n fica um quadrado no arquivo…
vc sabe me dizer o que pode ser?

Abraços e muitissimo obrigado…

Ricardo

Ahh… acho que sei o que pode ser: quando se usa o método format de String ou printf de PrintStream, nunca use ‘\n’ para pular de linha. Em seu lugar use ‘%n’ que é o caractere de escape correspondente nesses métodos.

ta. Mas uso o writer() ou append()?

Acho que o writer não gravou tudo…

Eu vou tentar o “%n” para ver… por hora Obrigado…

Olha só: para cada registro você cria um arquivo (sobrescrevendo o anterior). O correto é criar apenas um arquivo (antes do laço while) e dentro do laço ir usando o appen().

Não se esqueça de fechar a saída usando close() (somente após o laço).

valeu camarada, me deu uma ajuda maneira aqui…